شروع به کار


                baseURL:
                https://api.nipoto.com/v1/
            

مسیر پایه برای فراخوانی تمامی مسیرها(اند پوینت) این مستند ، آدرس زیر می باشد.

https://api.nipoto.com/v1/

تعدای از مسیرها بدون احراز هویت و به شکل عمومی در دسترس هستند. سایر مسیر های خصوصی با توکن مختص به خود که از پنل کاربری قابل ایجاد هست در دسترس خواهند بود . دقت نمایید که در هنگام ایجاد توکن در پنل نیپوتو دسترسی لازم به بخش مربوطه را به آن توکن بدهید.

پینگ-پونگ


                request:
                const res = await axios.get('/v1/ping')
            

برای چک کردن اتصال سرویس api از مسیر زیر استفاده میشه.

GET /v1/ping

تعداد درخواست قابل قبول به این اندپوینت برابر است با :

60 req/min


                response:

                res.data = 'pong'
            

گرفتن kline


                request:

                const url = '/v1/market/kline'
                const res = await axios.get(`${url}?market=BTC_USDT&timeFrame=1h`)
            

در حال حاضر فقط کندل های 1h, 4h, 1d رو برمیگردن. اگر تعداد تعریف نشه یک دونه رکورد برمیگرده که اخرین کندل همون تایم فریمه . در صورتی که تعداد بیشتر از ۱۰۰ تا باشه، ۱۰۰ تا رکورد برمیگرده. تعداد درخواست قابل قبول به این اندپوینت برابر است با :

60 req/min

GET /v1/market/kline



                response:

                res.data =  [{
                 openTimestamp: '2022-10-12T06:17:42.000Z',
                 closeTimestamp: '2022-10-12T06:17:43.000Z',
                 open: '0.00000000',
                 close: '0.00000000',
                 low: '0.00000000',
                 high: '0.00000000',
                 turnoverValue: '0.00000000',
                 volumeAmount: '0.00000000',
                 tradeCount: 0
                }]
            

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

پارامتر نوع الزامی نمونه توضیحات
market string بله USDT_IRT اسم مارکت
timeFrame string بله 1h مقادیر مجاز '1h', '4h', '1d' میباشد
limit number خیر 50 مقدار پیش فرضش یکه.

گرفتن اطلاعات مارکت ها


                request:
                const res = await axios.get('/v1/market/list')
            

برای گرفتن قیمت لحظه ای، بهترین قیمت خرید و بهترین قیمت فروش تمام مارکت های نیپوتو از این اندپوینت استفاده کنین. فرمت جوابی که برمیگرده به این شکله:

[[marketName, price, bestBid, bestAsk], …]

تعداد درخواست قابل قبول به این اندپوینت برابر است با :

60 req/min

GET /v1/market/list



                response:

                res.data = [['BTC/USDT', 12000, 13000, 14000], …]
            

گرفتن اردربوک


                request:

                const method = 'GET'
                const url= '/v1/market/order_book'

                const res = await axios({ url, method, params: { market: 'BTC_USDT' } })

            

برای گرفتن لیست اردربوک میشه از روت زیر استفاده کرد فرمت دیتایی که برمیگرده به این شکله:

[[[amount, stepPrice], ...], [[amount, stepPrice], …]]

تعداد درخواست قابل قبول به این اندپوینت برابر است با :

60 req/min

GET /v1/market/order_book



                response:

                res.data = [[[0.01, 1100], …], [[0.02, 1000], …]]
            

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

پارامتر نوع الزامی نمونه توضیحات
market string بله USDT_IRT اسم مارکت
side string خیر bid مقادیر قابل قبول: bid, ask, null.در صورتی که ساید تعریف نشده باشه، هر دو ساید برمیگردن.
limit number خیر 5 اگر لیمیت تعریف نشده باشه برای هر ساید ده تا رکورد برمیگرده.
step number خیر -2 اگر step تعریف نشده باشه رکوردها بر اساس کوچکترین استپ برمیگرده.

گرفتن معاملات اخیر مارکت


                request:

                const method = 'GET'
                const url= '/v1/market/recent_trades'

                const res = await axios({ url, method, params: { market: 'BTC_USDT' } })

            

برای گرفتن معاملات اخیر یک مارکت میتونین از اندپوینت زیر استفاده کنین. فرمت دیتایی که برمیگرده بدین شکله:

[[ amount, price, side, createdAt], …]

تعداد درخواست قابل قبول به این اندپوینت برابر است با :

60 req/min

GET /v1/market/recent_trades



                response:

                res.data = res.data=[[0.02,1000,'ask','2022-11-11T16:45:21.876Z'],[0.04,1001,'bid',   '2022-11-11T16:45:20.876Z']]

            

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

پارامتر نوع الزامی نمونه توضیحات
market string بله USDT_IRT اسم مارکت
limit number خیر 5 اگر لیمیت تعریف نشده باشه برای هر ساید ده تا رکورد برمیگرده.

دریافت توکن ها


                request:

                const url = '/v1/user/login'
                const method = 'POST'

                const res = await axios({
                                url,
                                method,
                                data: { apiKey, secretKey }
                            })
            

این اندپوینت refreshToken و accessToken رو برمیگردونه.از refreshToken برای گرفتن accessToken و از accessToken برای دسترسی به اندپوینت های خصوصی استفاده میشه.
مدت زمان اعتبار refreshToken هفتاد و دو ساعت و accessToken بیست و چهار ساعته اما اگه توکن اصلیتون منقضی شه accessToken و refreshToken تون هم از کار میفته.
تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

برای گرفتن accessToken و refreshToken باید به اندپوینت زیر درخواست بفرستین

POST /v1/user/login



                response:

                res.data = {
                      accessToken: 'U2FsdGVkX19evXx2Q3/jbvkz89H***S33y938FtfBU',
                      refreshToken: 'U2FsdGVkX19+LC6Hv79iij***zwSGGqIIW2VNe2toY='
                    }
            

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

پارامتر نوع الزامی نمونه توضیحات
apiKey string بله f298144015c6008af2c***01ed72bf10146ce02138 apiKey که باید از پنل دریافت کنین
secretKey string بله 652c6c5ed240bc022a7***a965c7d6b1a7a5b3fec1 secretKey که باید از پنل دریافت کنین

دریافت accessToken


                request:

                const url = '/v1/user/accessToken'
                const method = 'POST'

                const res = await axios({
                                url,
                                method,
                                data: { refreshToken }
                            })
            

برای دسترسی به روت های پرایوت به accessToken احتیاج دارین.
مدت زمان اعتبار accessToken بیست و چهار ساعته و باید با استفاده از refreshToken اون رو به روزرسانی کنین. اما اگه توکن اصلیتون منقضی شه accessToken تون هم از کار میفته. تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

برای گرفتن accessToken باید به اندپوینتی زیر درخواست بفرستین

POST /v1/user/accessToken



                response:

                res.data = {
                    accessToken: 'U2FsdGVkX1+fPZ***qY151OFOIMVkHXDOsub7X'
                }
            

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

پارامتر نوع الزامی نمونه توضیحات
refreshToken string بله U2FsdGVkX19evXx2Q3jbvkz89H***S33y938FtfBU رفرش توکن که از روت getTokens گرفتین

دریافت موجودی حساب


                request:

                const url = '/v1/accounting/balance'
                const method = 'GET'

                const res = await axios({
                                url,
                                method,
                                params: { currency: 'USDT' },
                                headers: {  authorization: `Bearer ${accessToken}` }
                            })
            

یرای گرفتن موجودی حساب میتونید از این روت استفاده کنین. در صورتی که نام ارز رو مشخص کنین فقط موجودی اون ارز برمیگرده، در غیر این صورت لیست تمام دارایی هاتون برمیگرده.
تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

GET /v1/accounting/balance



                response:

                res.data = {
                      USDT: {
                        active: 1000,
                        inuse: 0,
                        pending: 0
                      }
                    }
            

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

پارامتر نوع الزامی نمونه توضیحات
currency string خیر IRT اسم ارز

تولید آدرس رمزارز


                request:

                const url = '/v1/accounting/wallet'
                const method = 'POST'

                const res = await axios({
                              url,
                              method,
                              data: { currency: 'BTC', network: 'Bitcoin', paymentID: '1' },
                              headers: { authorization: `Bearer ${accessToken}` }
                            })
            

برای ایجاد کیف پول رمزارزی میتونین از این اندپوینت استفاده کنین. تعداد درخواست قابل قبول به این اندپوینت برابر است با :

60 req/min

POST /v1/accounting/wallet



                response:

                res.data = {
                   address: '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa',
                   currency: 'BTC',
                   network: 'Bitcoin',
                   p2address: null,
                   paymentID: '1',
                   walletID: '691c9b83-f8f4-44c3-851d-1db50dafc68e'
                }
            

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

پارامتر نوع الزامی نمونه توضیحات
currency string بله َUSDT اسم ارز
network string بله TRC20 اسم شبکه
paymentID string بله 20220509001 یک آی دی که میخواین جهت جلوگیری از دابل اسپندینگ به این کیف پول اختصاص بدین.

دریافت اطلاعات کیف پول


                request:

                const url = '/v1/accounting/wallet/:id'
                const method = 'GET'

                const res = await axios({
                              url: url.replace(':id', '691c9b83-f8f4-44c3-851d-1db50dafc68e'),
                              method,
                              headers: { authorization: `Bearer ${accessToken}` }
                            })
            

برای دریافت اطلاعات کیف پول رمزارزی میتونین از این اندپوینت استفاده کنین. تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

GET /v1/accounting/wallet/:id



                response:

                res.data = {
                   address: '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa',
                   network: 'Bitcoin',
                   origin: 'nipoto-api',
                   p2address: null,
                   type: 'bech32',
                   id: '691c9b83-f8f4-44c3-851d-1db50dafc68e',
                   createdAt: '2022-09-16T10:51:12.290Z'
                }
            

دریافت لیست کیف پول ها


                request:

                const url = '/v1/accounting/wallet'
                const method = 'GET'

                const res = await axios({
                              url,
                              method,
                              headers: { authorization: `Bearer ${accessToken}` }
                            })
            

برای دریافت اطلاعات کیف پول رمزارزی میتونین از این اندپوینت استفاده کنین. تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

GET /v1/accounting/wallet



                response:

                res.data = [{
                   address: '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa',
                   network: 'Bitcoin',
                   origin: 'nipoto-api',
                   p2address: null,
                   type: 'bech32',
                   id: '691c9b83-f8f4-44c3-851d-1db50dafc68e',
                   createdAt: '2022-09-16T10:51:12.290Z'
                },{
                   address: 'rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz',
                   network: 'XRP',
                   origin: 'nipoto',
                   p2address: 125451185,
                   type: null,
                   id: 'bd3dff0c-c331-4ca0-89ee-9162e4a36827',
                   createdAt: '2022-09-14T09:22:18.450Z'
                }]
            

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

پارامتر نوع الزامی نمونه توضیحات
network string خیر TRC20 اسم شبکه
origin string خیر nipoto مسیر ایجاد. مقادیر مجاز برابر است با: nipoto, nipoto-api
pageNumber number خیر 5 برای pagination استفاده میشه. به صورت پیش فرض مقدارش یک است
pageCount number خیر 50 تعدادی که میخواین برگرده. به صورت پیش فرض ۲۰ تا برداشت اخیر برمیگرده. ماکزیمم مقداری که میتونین درخواست بدین ۱۰۰ تاست.
startDate date خیر 2022-10-11T06:17:42.000Z اگر میخواین بر اساس زمان لیست برداشت ها رو فیلتر کنین و بگیرین.
endDate date خیر 2022-10-12T06:17:42.000Z اگر میخواین بر اساس زمان لیست برداشت ها رو فیلتر کنین و بگیرین.

اطلاع رسانی واریز جدید


                request:
                const url = 'https://yourwebsite.com/callback/newdeposit.php'
                const method = 'POST'
                data: { depositID }
            

هر واریز جدیدی که به کیف پول های شما در نیپوتو انجام میشه ما یک ریکوئست POST به مسیری که در هنگام ایجاد توکن تعریف می کنید می زنیم و پارامتر depositID رو که نوعش uuid هست رو واستون POST می کنیم. سپس شما جهت دریافت اطلاعات واریزی به مسیر «گرفتن اطلاعات واریز» Get بزنید.:

گزارش واریز رو به یک لینک در سایت شما POST می کنیم.

POST https://yourwebsite.com/callback/newdeposit.php


گرفتن اطلاعات واریز


                request:
                const url = '/v1/accounting/deposit/:id'
                const method = 'GET'

                   const res = await axios({
                        url: url.replace(':id', '9e0eb6c4-cf78-499b-90f2-9caac4e81c67'),
                        method,
                        headers: { authorization: `Bearer ${accessToken}` }
                })
            

تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

برای دریافت اطلاعات یک واریز باید به اندپوینت زیر درخواست بزنین.

GET /v1/accounting/deposit/:id



                response:

                res.data = {
                      amount: 1000,
                      createdAt: '2022-10-09T06:17:42.000Z',
                      currency: 'USDT',
                      fee: 1,
                      hash: '52b19cf51b831adc39ae95ab****a3bb8b6d0583f4ef5fa316fae4921517e79d6a74',
                      humanID: '123456789',
                      id,
                      instrument: 'TRKofFNxXpCcYmaT4uWT7JCG6UDMJhXS2w',
                      network: 'TRC20',
                      origin: 'nipoto',
                      status: 'done',
                      transactionID: '9e0eb6c4-cf78-499b-90f2-9caac4e81c67'
                    }

            

گرفتن اطلاعات تمام واریزی ها


                request:
                const url = '/v1/accounting/deposit'
                const method = 'GET'

                   const res = await axios({
                        url: url.replace(':id', '9e0eb6c4-cf78-499b-90f2-9caac4e81c67'),
                        method,
                        headers: { authorization: `Bearer ${accessToken}` }
                })
            

تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

برای دریافت اطلاعات تمام واریزی ها باید به اندپوینت زیر درخواست بزنین.

GET /v1/accounting/deposit



                response:

                res.data = {
                      amount: 1000,
                      createdAt: '2022-10-09T06:17:42.000Z',
                      currency: 'USDT',
                      fee: 1,
                      hash: '52b19cf51b831adc39ae95ab****a3bb8b6d0583f4ef5fa316fae4921517e79d6a74',
                      humanID: '123456789',
                      id,
                      instrument: 'TRKofFNxXpCcYmaT4uWT7JCG6UDMJhXS2w',
                      network: 'TRC20',
                      origin: 'nipoto',
                      status: 'done',
                      transactionID: '9e0eb6c4-cf78-499b-90f2-9caac4e81c67'
                    }
            

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

پارامتر نوع الزامی نمونه توضیحات
network string خیر TRC20 اسم شبکه
currency string خیر USDT اسم ارز
wallet string خیر TRKofFNxXpCcYmaT4uWT7JCG6UDMJhXS2w آدرس مبدا
status string خیر done وضعیت دپوزیت. مقادیر مجاز برابر است با: processing و done
origin string خیر nipoto مسیر واریز. مقادیر مجاز برابر است با: nipoto و nipoto-api
pageNumber number خیر 5 برای pagination استفاده میشه. به صورت پیش فرض مقدارش یک است
pageCount number خیر 50 تعدادی که میخواین برگرده. به صورت پیش فرض ۲۰ تا برداشت اخیر برمیگرده. ماکزیمم مقداری که میتونین درخواست بدین ۱۰۰ تاست.
startDate date خیر 2022-10-11T06:17:42.000Z اگر میخواین بر اساس زمان لیست برداشت ها رو فیلتر کنین و بگیرین.
endDate date خیر 2022-10-12T06:17:42.000Z اگر میخواین بر اساس زمان لیست برداشت ها رو فیلتر کنین و بگیرین.

دریافت کارمزد برداشت


                request:

                const url = '/v1/accounting/withdraw/fee'
                const method = 'GET'

                const res = await axios({
                                url,
                                method,
                                headers: {  authorization: `Bearer ${accessToken}` }
                            })
            

تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

GET /v1/accounting/withdraw/fee



                response:

                res.data =  {
                  ADA: [
                    { fee: 0, min: 0, network: 'Cardano' },
                    { fee: 0, min: 0, network: 'BEP20' }
                  ],
                  BNB: [
                    { fee: 0, min: 0, network: 'BEP2' },
                    { fee: 0, min: 0, network: 'BEP20' }
                  ],
                  BTC: [
                    { fee: 0, min: 0, network: 'Bitcoin_Bulk' },
                    { fee: 0, min: 0, network: 'Bitcoin' },
                    { fee: 0, min: 0, network: 'BEP20' }
                  ],... }
            

درخواست برداشت رمزارز


                request:

                const url = '/v1/accounting/withdraw/crypto'
                const method = 'POST'

                const res = await axios({
                                url,
                                method,
                                data: {
                                        address: 'TRKofFNxXpCcYmaT4uWT7JCG6UDMJhXS2w',
                                        currency: 'USDT',
                                        network: 'TRC20',
                                        amount: 300,
                                        paymentID: '1',
                                        description: 'توضیحات'
                                },
                                headers: {  authorization: `Bearer ${accessToken}` }
                            })
            

در برداشت رمزارز نکته ای ک باید در نظر داشته باشین اینه که اگه "برداشت دو مرحله‌ای" رو موقع جنریت توکن علامت زده باشین یک لینک به ایمیل شما فرستاده میشه که باید روی لینک کلیک کنین و برداشت رو تایید کنین. در این حالت وضعیتی که برمیگرده pendingه. این لینک فقط به مدت ۳۰ دقیقه معتبره. پس از گذشت ۳۰ دقیقه در صورت تایید نشدن لینک، برداشت کنسل میشه.
در صورتی که تیک برداشت دومرحله ای رو نزدین وضعیتی که برمیگرده auditing ه و تنها ۹۰ ثانیه فرصت دارین تا برداشت رو کنسل کنین. بعد از اون برداشت فرستاده میشه.
کارمزد از مقداری که میخواهید برداشت کنید کسر میشود و در نهایت amount - fee به کیف پول شما واریز میشود.
تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

برای درخواست برداشت رمزارز باید به اندپوینت زیر درخواست بزنین.

POST /v1/accounting/withdraw/crypto



                response:

                res.data = {
                      address: 'TRKofFNxXpCcYmaT4uWT7JCG6UDMJhXS2w',
                      amount: 300,
                      currency: 'USDT',
                      description: 'توضیحات',
                      fee: 1,
                      network: 'TRC20',
                      paymentID: '1',
                      status: 'auditing',
                      tags: [],
                      withdrawID: '789bb874-8af0-4bf3-ab05-11366ea3fd30'
                    }
            

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

پارامتر نوع الزامی نمونه توضیحات
amount number بله 300 مقدار برداشت(کارمزد برداشت از این مقدار کسر میشه)
currency string بله USDT اسم ارز
network string بله TRC20 اسم شبکه
address string بله TRKofFNxXpCcYmaT4uWT7JCG6UDMJhXS2w آدرس مقصد
p2address string خیر 267129692 memo(BEP2) یا tag(Ripple)
paymentID string خیر 20221009001 یک آی دی که میخواین جهت جلوگیری از دابل اسپندینگ به این برداشت اختصاص بدین.
tags array خیر ['تست'] اگر میخواین راحت تر برداشت هاتون رو دسته بندی کنین
description string خیر درخواست برداشت به آقای x فاکتور شماره y توضیحاتی که میخواین راجع به این برداشت بنویسین.

درخواست برداشت تومان


                request:

                const url = '/v1/accounting/withdraw/irt'
                const method = 'POST'

                const res = await axios({
                                url,
                                method,
                                data: {
                                        address: '5022291061292486',
                                        amount: 300,
                                        paymentID: '1',
                                        description: 'توضیحات'
                                },
                                headers: {  authorization: `Bearer ${accessToken}` }
                            })
            

بردای برداشت تومان شماره شبا و شماره کارتی که میفرستین حتما باید از قبل توی پنل ثبت شده باشه و به نام صاحب اکانت باشه.
نکته ای ک باید در نظر داشته باشین اینه که اگه "برداشت دو مرحله‌ای" رو موقع جنریت توکن علامت زده باشین یک لینک به ایمیل شما فرستاده میشه که باید روی لینک کلیک کنین و برداشت رو تایید کنین. در این حالت وضعیتی که برمیگرده pendingه. این لینک فقط به مدت ۳۰ دقیقه معتبره. پس از گذشت ۳۰ دقیقه در صورت تایید نشدن لینک، برداشت کنسل میشه.
در صورتی که تیک برداشت دومرحله ای رو نزدین وضعیتی که برمیگرده auditing ه و تنها ۹۰ ثانیه فرصت دارین تا برداشت رو کنسل کنین. بعد از اون برداشت فرستاده میشه.
کارمزد از مقداری که میخواهید برداشت کنید کسر میشود و در نهایت amount - fee به حساب شما واریز میشود.
تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

برای درخواست برداشت تومان باید به اندپوینت زیر درخواست بزنین.

POST /v1/accounting/withdraw/irt



                response:

                res.data = {
                    address: '5022291061292486',
                    amount: 100000,
                    currency: 'IRT',
                    description: 'توضیحات',
                    fee: 5000,
                    network: 'bankCard',
                    paymentID: '1',
                    status: 'auditing',
                    tags: [],
                    withdrawID:  '789bb874-8af0-4bf3-ab05-11366ea3fd30'
                }
            

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

پارامتر نوع الزامی نمونه توضیحات
amount number بله 1000000 مقدار برداشت(کارمزد برداشت از این مقدار کسر میشه)
address string بله 1234567812345678 آدرس مقصد
p2address string خیر 267129692 memo(BEP2) یا tag(Ripple)
paymentID string خیر 20221009001 یک آی دی که میخواین جهت جلوگیری از دابل اسپندینگ به این برداشت اختصاص بدین.
tags array خیر ['تست'] اگر میخواین راحت تر برداشت هاتون رو دسته بندی کنین
description string خیر درخواست برداشت به آقای x فاکتور شماره y توضیحاتی که میخواین راجع به این برداشت بنویسین.

لفو برداشت


                request:

                const url = '/v1/accounting/withdraw/:id'
                const method = 'DELETE'

                const res = await axios({
                                url: url.replace(':id', '789bb874-8af0-4bf3-ab05-11366ea3fd30')
                                method,
                                headers: {  authorization: `Bearer ${accessToken}` }
                            })
            

id که فرستاده میشه همون withdrawID هست که موقع گرفتن لیست برداشت ها یا موقع فرستادن یک درخواست برداشت به سمت شما برمیگرده.
پس از آنکه وضعیت برداشت به حسابرسی(auditing) تغییر کرد، تنها ۳۰ ثانیه فرصت دارید تا برداشت را کنسل کنید.
تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

برای لفو برداشت باید به اندپوینت زیر درخواست بزنین.

DELETE /v1/accounting/withdraw/:id



                response:

                res.data = {
                  status: 'canceled',
                  withdrawID:  '789bb874-8af0-4bf3-ab05-11366ea3fd30'
                }
            

لفو برداشت با paymentID


                request:

                const url = '/v1/accounting/withdraw'
                const method = 'DELETE'

                const res = await axios({
                                url,
                                method,
                                params: { paymentID: '1' },
                                headers: {  authorization: `Bearer ${accessToken}` }
                            })
            

پس از آنکه وضعیت برداشت به حسابرسی(auditing) تغییر کرد، تنها ۳۰ ثانیه فرصت دارید تا برداشت را کنسل کنید.
تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

برای لفو برداشت باید به اندپوینت زیر درخواست بزنین.

DELETE /v1/accounting/withdraw



                response:

                res.data = {
                  status: 'canceled',
                  paymentID: '1'
                }

            

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

پارامتر نوع الزامی نمونه توضیحات
paymentID string بله 20221009001 PaymentID برداشتی که میخواین کنسل کنین.

دریافت لیست برداشت ها


                request:

                const url = '/v1/accounting/withdraw'
                const method = 'GET'

                const res = await axios({
                                url,
                                method,
                                params: {
                                  currency: 'USDT',
                                },
                                headers: {  authorization: `Bearer ${accessToken}` }
                            })
            

برای گرفتن لیست برداشت ها (یا گرفتن یک برداشت با استفاده از paymentID ) میتونین از اندپوینت زیر استفاده کنین. در صورتی که هیچ پارامتری ارسال نشه ۲۰ تا برداشت اخیر کاربر بدون توجه به ارز و شبکه برمیگرده. اگر paymentID رو بفرستین سایر پارامترهای ارسالی نادیده گرفته میشن
تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

برایدریافت لیست برداشت ها باید به اندپوینت زیر درخواست بزنین.

GET /v1/accounting/withdraw



                response:

                res.data = [{
                    origin: 'nipoto',
                    tags: ['mainAccount'],
                    description: null,
                    id: '789bb874-8af0-4bf3-ab05-11366ea3fd30',
                    amount: 500,
                    currency: 'USDT',
                    address: 'address',
                    network: 'TRC20',
                    fee: 1,
                    p2address: null,
                    humanID: '1',
                    createdAt: '2022-10-09T06:17:42.000Z',
                    status: 'pending',
                    hash: null
                  },…]
            

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

پارامتر نوع الزامی نمونه توضیحات
paymentID string خیر 20221009001 paymentID برداشتی که میخواین اطلاعاتش رو بگیرین.
currency string خیر USDT اسم ارز
network string خیر TRC20 اسم شبکه
pageNumber number خیر 5 برای pagination استفاده میشه. به صورت پیش فرض مقدارش یک است
pageCount number خیر 50 تعدادی که میخواین برگرده. به صورت پیش فرض ۲۰ تا برداشت اخیر برمیگرده. ماکزیمم مقداری که میتونین درخواست بدین ۱۰۰ تاست.
status string خیر وضعیت برداشت. مقادیر قابل قبول عبارتند از pending, canceled,auditing,processing,done,rejected,expired auditing
startDate date خیر 2022-10-11T06:17:42.000Z اگر میخواین بر اساس زمان لیست برداشت ها رو فیلتر کنین و بگیرین.
endDate date خیر 2022-10-12T06:17:42.000Z اگر میخواین بر اساس زمان لیست برداشت ها رو فیلتر کنین و بگیرین.

گرفتن یک برداشت با استفاده از withdrawID


                request:

                const url = '/v1/accounting/withdraw/:id'
                const method = 'GET'

                const res = await axios({
                                url: url.replace(':id', '789bb874-8af0-4bf3-ab05-11366ea3fd30')
                                method,
                                headers: {  authorization: `Bearer ${accessToken}` }
                            })
            

id که فرستاده میشه همون withdrawID هست که موقع گرفتن لیست برداشت ها یا موقع فرستادن یک درخواست برداشت به سمت شما برمیگرده.
تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

برای گرفتن اطلاعات برداشت باید به اندپوینت زیر درخواست بزنین.

GET /v1/accounting/withdraw/:id



                response:

                res.data =  {
                    origin: 'nipoto',
                    tags: ['mainAccount'],
                    description: null,
                    id: '789bb874-8af0-4bf3-ab05-11366ea3fd30',
                    amount: 500,
                    currency: 'USDT',
                    address: 'address',
                    network: 'TRC20',
                    fee: 1,
                    p2address: null,
                    humanID: '1',
                    createdAt: '022-10-09T06:17:42.000Z',
                    status: 'auditing',
                    hash: null
                  }
            

اد سفارش لیمیت


                request:

                const url = '/v1/market/order/limit'
                const method = 'POST'

                const res = await axios({
                               url,
                                method,
                                data: { market: 'BTC_USDT', side: 'bid', amount: 0.01, price: 1000, paymentID: '1' }
                                headers: {  authorization: `Bearer ${accessToken}` }
                            })
            

تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

برای ثبت کردن سفارش لیمیت باید از اندپوینت زیر استفاده کنین.

POST /v1/market/order/limit


                response:

                res.data= {
                  amount: 0.01,
                  market: 'BTC/USDT',
                  orderID: 'acb16d06-9bfa-48b6-bcf5-298cba3ca967',
                  paymentID: '1',
                  price: 1000,
                  side: 'bid',
                  type: 'limit'
                }
            

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

پارامتر نوع الزامی نمونه توضیحات
market string بله BTC_USDT اسم مارکتی که میخواین توش سفارش ثبت کنین
side string بله bid مارکت BTC_USDT رو در نظر بگیرین. اگر میخواین بیت کوین بخرین سایدی که میفرستین باید bid باشه و اگر میخواین بیت کوین بفروشین باید ساید ask بفرستین
amount number بله 0.001 بازم مارکت BTC_USDT ور در نظر بگیرین. Amount میشه مفدار بیت کوینی که میخواین بخرین یا بفروشین
price number بله 19000 قیمتی که میخواین در اون ارزتون رو بفروشین/بخرین
paymentID string بله 1401_04_001 یک آی دی که میخواین به این خرید/فروش اختصاص بدین.

اد سفارش مارکت


                request:

                const url = '/v1/market/order/market'
                const method = 'POST'

                const res = await axios({
                               url,
                                method,
                                data: { market: 'BTC_USDT', side: 'bid', amount: 0.01, paymentID: '1' }
                                headers: {  authorization: `Bearer ${accessToken}` }
                            })
            

تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

برای ثبت کردن سفارش مارکت باید از اندپوینت زیر استفاده کنین.

POST /v1/market/order/market


                response:

                res.data= {
                  amount: 0.01,
                  market: 'BTC/USDT',
                  orderID: 'acb16d06-9bfa-48b6-bcf5-298cba3ca967',
                  paymentID: '1',
                  side: 'bid',
                  type: 'market'
                }
            

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

پارامتر نوع الزامی نمونه توضیحات
market string بله BTC_USDT اسم مارکتی که میخواین توش سفارش ثبت کنین
side string بله bid مارکت BTC_USDT رو در نظر بگیرین. اگر میخواین بیت کوین بخرین سایدی که میفرستین باید bid باشه و اگر میخواین بیت کوین بفروشین باید ساید ask بفرستین
amount number بله 0.001 بازم مارکت BTC_USDT ور در نظر بگیرین. Amount میشه مفدار بیت کوینی که میخواین بخرین یا بفروشین
paymentID string بله 1401_04_001 یک آی دی که میخواین به این خرید/فروش اختصاص بدین.

اد سفارش oco


                request:

                const url = '/v1/market/order/oco'
                const method = 'POST'

                const res = await axios({
                                url,
                                method,
                                data: { market: 'BTC/USDT', side: 'bid', amount: 0.01, price: 1000, paymentID: '1', limit: 1000, stop: 1001 }
                                headers: {  authorization: `Bearer ${accessToken}` }
                            })
            

تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

برای ثبت کردن سفارش لیمیت باید از اندپوینت زیر استفاده کنین.

POST /v1/market/order/oco


                response:

                res.data= {
                  amount: 0.01,
                  market: 'BTC/USDT',
                  orderID: 'acb16d06-9bfa-48b6-bcf5-298cba3ca967',
                  paymentID: '1',
                  price: 1000,
                  stop: 1001,
                  limit: 1000
                  side: 'bid',
                  type: 'oco'
                }
            

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

پارامتر نوع الزامی نمونه توضیحات
market string بله BTC_USDT اسم مارکتی که میخواین توش سفارش ثبت کنین
side string بله bid مارکت BTC_USDT رو در نظر بگیرین. اگر میخواین بیت کوین بخرین سایدی که میفرستین باید bid باشه و اگر میخواین بیت کوین بفروشین باید ساید ask بفرستین
amount number بله 0.001 بازم مارکت BTC_USDT ور در نظر بگیرین. Amount میشه مفدار بیت کوینی که میخواین بخرین یا بفروشین
price number بله ???? ???
stop number بله ???? ???
limit number بله ???? ???
paymentID string بله 1401_04_001 یک آی دی که میخواین به این خرید/فروش اختصاص بدین.

اد سفارش استاپ-لیمیت


                request:

                const url = '/v1/market/order/stopLimit'
                const method = 'POST'

                const res = await axios({
                                url,
                                method,
                                data: { market: 'BTC/USDT', side: 'bid', amount: 0.01, price: 1000, paymentID: '1', limit: 1000, stop: 1001 }
                                headers: {  authorization: `Bearer ${accessToken}` }
                            })
            

تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

برای ثبت کردن سفارش استاپ-لیمیت باید از اندپوینت زیر استفاده کنین.

POST /v1/market/order/stopLimit


                response:

                res.data= {
                  amount: 0.01,
                  market: 'BTC/USDT',
                  orderID: 'acb16d06-9bfa-48b6-bcf5-298cba3ca967',
                  paymentID: '1',
                  stop: 1001,
                  limit: 1000
                  side: 'bid',
                  type: 'oco'
                }
            

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

پارامتر نوع الزامی نمونه توضیحات
market string بله BTC_USDT اسم مارکتی که میخواین توش سفارش ثبتکنین
side string بله bid مارکت BTC_USDT رو در نظر بگیرین. اگر میخواین بیت کوین بخرین سایدی که میفرستین باید bid باشه و اگر میخواین بیت کوین بفروشین باید ساید ask بفرستین
amount number بله 0.001 بازم مارکت BTC_USDT ور در نظر بگیرین. Amount میشه مفدار بیت کوینی که میخواین بخرین یا بفروشین
stop number بله ???? ???
limit number بله ???? ???
paymentID string بله 1401_04_001 یک آی دی که میخواین به این خرید/فروش اختصاص بدین.

کنسل کردن سفارش


                request:

                const url = '/v1/market/order/:id'
                const method = 'DELETE'

                const res = await axios({
                                url: url.replace(':id', '289bb874-8af0-4bf3-ab05-11366ea3fd30')
                                method,
                                headers: {  authorization: `Bearer ${accessToken}` }
                            })
            

id که فرستاده میشه همون orderID هست که موقع گرفتن لیست سفارشات یا موقع ثبت سفارش به سمت شما برمیگرده.
تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

برای لفو سفارش باید به اندپوینت زیر درخواست بزنین.

DELETE /v1/market/order/:id



                response:

                res.data = {
                    type: 'limit',
                    remainingAmount: 0.004,
                    market: 'BTC/USDT',
                    orderID: id,
                    price: 1000,
                    side: 'bid'
                }

            

کنسل کردن سفارشها


                request:

                const url = '/v1/market/order'
                const method = 'DELETE'

                const res = await axios({
                                urlو
                                method,
                                headers: {  authorization: `Bearer ${accessToken}` }
                            })
            

در صورتی که paymentID فرستاده شود فقط سفارش مربوطه کنسل خواهد شد(که در این صورت پاسخ بازگشتی مشابه با «کنسل کردن سفارش» میباشد) در غیر این صورت تمام سفارشهای فعال کاربر کنسل میشوند
تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

برای لفو سفارش باید به اندپوینت زیر درخواست بزنین.

DELETE /v1/market/order



                response:

                res.data = {
                    code: 'SUCCESS',
                    message: 'all openOrders are canceled'
                }

            

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

پارامتر نوع الزامی نمونه توضیحات
paymentID string بله 20221009001 PaymentID برداشتی که میخواین کنسل کنین.

گرفتن سفارشات فعال


                request:
                const url = '/v1/market/order/open'
                const method = 'GET'

                      const res = await axios({
                        url: `${url}?market=BTC_USDT`,
                        method
                        headers: { authorization: `Bearer ${accessToken}` },
                })
            

تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

برای دریافت سفارشات فعال باید به اندپوینت زیر درخواست بزنین.

GET /v1/market/order/open



                response:

                res.data = [
                    {
                        id: 'e959f995-8986-4cb2-8731-e6145c74047c',
                        type: 'stop-limit',
                        side: 'bid',
                        status: 'pending',
                        humanID: '210234297718',
                        isTriggered: true,
                        remainingAmount: 0.01,
                        amount: 0.01,
                        price: 0,
                        stop: 1000,
                        limit: 1001,
                        createdAt: '2022-10-23T08:16:49.431Z',
                        origin: 'nipoto',
                        market: 'BTC/USDT'
                    },...
                ]

            

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

پارامتر نوع الزامی نمونه توضیحات
market string بله BTC_USDT نام بازار
pageNumber number خیر 5 برای pagination استفاده میشه. به صورت پیش فرض مقدارش یک است
pageCount number خیر 50 تعدادی که میخواین برگرده. به صورت پیش فرض ۲۰ تا برداشت اخیر برمیگرده. ماکزیمم مقداری که میتونین درخواست بدین ۱۰۰ تاست.
type string خیر limit مقادیر مجاز برابر است با 'limit', 'market', 'oco', 'stop-limit'
side string خیر bid مقادیر مجاز برابر است با bid و ask
startDate date خیر 2022-10-11T06:17:42.000Z اگر میخواین بر اساس زمان لیست برداشت ها رو فیلتر کنین و بگیرین.
endDate date خیر 2022-10-12T06:17:42.000Z اگر میخواین بر اساس زمان لیست برداشت ها رو فیلتر کنین و بگیرین.

گرفتن تاریخچه سفارشات


                request:
                const url = '/v1/market/order'
                const method = 'GET'

                      const res = await axios({
                        url,
                        method,
                        params: { market: 'BTC/USDT' },
                        headers: { authorization: `Bearer ${accessToken}` }
                })
            

در صورتی که paymentID فرستاده شود سایر پارامترها نادیده گرفته میشوند.
تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

برای دریافت سفارشات فعال باید به اندپوینت زیر درخواست بزنین.

GET /v1/market/order



                response:

                res.data = [{
                        id: 'e959f995-8986-4cb2-8731-e6145c74047c',
                        market: 'BTC/USDT',
                        type: 'limit',
                        side: 'bid',
                        amount: 0.01,
                        average: 999,
                        price: 999,
                        stop: 0,
                        limit: 0,
                        humanID: '210230633784',
                        origin: 'nipoto',
                        executedAmount: 0.009,
                        executedTotal: 8.991,
                        status: 'partiallyCanceled'
                      },
                      {
                        amount: 0.01,
                        average: 1000,
                        executedAmount: 0.01,
                        executedTotal: 10,
                        humanID: '210230633784',
                        id: 'e959f995-8986-4cb2-8731-e6145c74047d',
                        limit: 0,
                        market: 'BTC/USDT',
                        origin: 'nipoto-api',
                        price: 1000,
                        side: 'bid',
                        status: 'done',
                        stop: 0,
                        type: 'limit'
                      }
                ]

            

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

پارامتر نوع الزامی نمونه توضیحات
market string بله BTC_USDT نام بازار
pageNumber number خیر 5 برای pagination استفاده میشه. به صورت پیش فرض مقدارش یک است
pageCount number خیر 50 تعدادی که میخواین برگرده. به صورت پیش فرض ۲۰ تا برداشت اخیر برمیگرده. ماکزیمم مقداری که میتونین درخواست بدین ۱۰۰ تاست.
type string خیر limit مقادیر مجاز برابر است با 'limit', 'market', 'oco', 'stop-limit'
side string خیر bid مقادیر مجاز برابر است با bid و ask
status string خیر canceled مقادیر مجاز برابر است با canceled, done و partiallyCanceled
startDate date خیر 2022-10-11T06:17:42.000Z اگر میخواین بر اساس زمان لیست سفارشات ها رو فیلتر کنین و بگیرین.
endDate date خیر 2022-10-12T06:17:42.000Z اگر میخواین بر اساس زمان لیست سفارشات ها رو فیلتر کنین و بگیرین.
paymentID string خیر 20221205001 paymentID مربوط به اون سفارش

گرفتن اطلاعات یک سفارش


                request:
                const url = '/v1/market/order/:id'
                const method = 'GET'

                   const res = await axios({
                        url: url.replace(':id', '9e0eb6c4-cf78-499a-90f2-9caac4e81c67'),
                        method,
                        headers: { authorization: `Bearer ${accessToken}` }
                })
            

تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

برای دریافت اطلاعات یک سفارش باید به اندپوینت زیر درخواست بزنین.

GET /v1/market/order/:id



                response:

                res.data = {
                        id: '9e0eb6c4-cf78-499a-90f2-9caac4e81c67',
                        market: 'BTC/USDT',
                        type: 'limit',
                        side: 'bid',
                        amount: 0.01,
                        average: 999,
                        price: 999,
                        stop: 0,
                        limit: 0,
                        humanID: '210230633784',
                        origin: 'nipoto',
                        executedAmount: 0.009,
                        executedTotal: 8.991,
                        status: 'partiallyCanceled'
                      }

            

گرفتن معاملات یک سفارش


                request:
                const url = '/v1/market/order/:id/trades'
                const method = 'GET'

                   const res = await axios({
                        url: url.replace(':id', '9e0eb6c4-cf78-499a-90f2-9caac4e81c67'),
                        method,
                        headers: { authorization: `Bearer ${accessToken}` }
                })
            

تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

برای دریافت لیست معاملات یک سفارش باید به اندپوینت زیر درخواست بزنین.

GET /v1/market/order/:id/trades



                response:

                res.data = [
                        {
                          side: 'bid',
                          taker: 'maker',
                          humanID: '123456',
                          amount: 0.009,
                          price: 999,
                          fee: 0.008991,
                          createdAt: '2022-10-23T08:09:20.161Z',
                          market: 'BTC/USDT'
                        },
                        {
                          side: 'bid',
                          taker: 'taker',
                          amount: 0.009,
                          price: 999,
                          fee: 0.000009,
                          humanID: '123457',
                          createdAt: '2022-10-23T08:09:20.161Z',
                          market: 'BTC/USDT'
                        }
                ]

            

گرفتن لیست معاملات


                request:
                const url = '/v1/market/trade'
                const method = 'GET'

                   const res = await axios({
                        url: `${url}?market=BTC_USDT`,
                        method,
                        headers: { authorization: `Bearer ${accessToken}` }
                })
            

تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min

برای دریافت لیست معاملات باید به اندپوینت زیر درخواست بزنین.

GET /v1/market/trade



                response:

                res.data = [
                        {
                          side: 'bid',
                          taker: 'maker',
                          humanID: '123456',
                          amount: 0.009,
                          price: 999,
                          fee: 0.008991,
                          createdAt: '2022-10-23T08:09:20.161Z',
                          market: 'BTC/USDT'
                        },
                        {
                          side: 'bid',
                          taker: 'taker',
                          amount: 0.009,
                          price: 999,
                          fee: 0.000009,
                          humanID: '123457',
                          createdAt: '2022-10-23T08:09:20.161Z',
                          market: 'BTC/USDT'
                        }
                ]

            

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

پارامتر نوع الزامی نمونه توضیحات
market string خیر BTC_USDT نام بازار
pageNumber number خیر 5 برای pagination استفاده میشه. به صورت پیش فرض مقدارش یک است
pageCount number خیر 50 تعدادی که میخواین برگرده. به صورت پیش فرض ۲۰ تا برداشت اخیر برمیگرده. ماکزیمم مقداری که میتونین درخواست بدین ۱۰۰ تاست.
side string خیر bid مقادیر مجاز برابر است با bid و ask
taker boolean خیر true taker!
startDate date خیر 2022-10-11T06:17:42.000Z اگر میخواین بر اساس زمان لیست سفارشات ها رو فیلتر کنین و بگیرین.
endDate date خیر 2022-10-12T06:17:42.000Z اگر میخواین بر اساس زمان لیست سفارشات ها رو فیلتر کنین و بگیرین.

معرفی معاملات عمده



            

برای دسترسی به اندپوینت های معاملات عمده، باید از توکن های تایپ «معامله» استفاده شود. برای دریافت این نوع توکن لطفا به

https://app.nipoto.com/user-api/add

مراجعه کنید. علاوه بر این، باید اجازه‌ی دسترسی به معاملات عمده نیز به شما داده شود. برای آگاهی از نحوه ی فعالسازی معاملات عمده برای حساب شما، لطفا به صفحه ی زیر بروید.

https://nipoto.com/feature/p2p

تعداد درخواست قابل قبول به این روت برابر است با :

60 req/min


واژه شناسی

انواع معاملات:

  • deal: معامله
  • spot: معاملات نقدی
  • sputure: معاملات تسویه فردایی
  • future: معاملات فردایی

آگهی ها یا نقدی هستند یا فردایی. آگهی هایی که نقدی هستند می توانند تسویه فردایی نیز باشند.

روش های پرداخت

با استفاده از روش های پرداخت، کاربر آگهی گذار مشخص می کند می خواهد ریال را از چه طریقی دریافت و یا واریز کند.

روش های پرداخت در حال حاضر به شرح زیر هستند:

  • iban: پایا بانکی
  • ibanPY:پایا پرداخت یاری و اسامی بانک ها

در هنگام ارسال درخواست ایجاد آگهی، نام بانک ها حتما باید با حروف بزرگ و به نوشتار زیر ارسال شود.

DAY, TEJARAT, MASKAN, MELLI, MELLAT, AYANDEH, SADERAT, SAMAN, SINA, SHAHER, POST, PASARGAD, PARSIAN, NOOR, MELAL, MEHR_IRAN, GARDESHGARI, SANAT_VA_MADAN, EGHTESAD-NOVIN, RESALAT, REFAH, KHAVARMIANEH, KESHAVARZI, KARAFARIN, IRANZAMIN, SARNAYEH, MARKAZI, TOSEAH_TAAVON, TOSEAH_ SADERAT, IRAN_VENEZUELA

سمت سفارش

  • bid: خرید
  • ask: فروش

جریمه کنسلی

در صورتی که درخواست کنسلی توسط یکی از کاربران داده شود، کاربر می تواند لغو با بدون جریمه را انتخاب کند. برای محاسبه جریمه ی کنسلی از cancelLationPenaltyPercentage و مقدار معامله استفاده می شود.در صورتی که هنگام قبول کردن درخواست کنسلی گزینه لغو با جریمه را انتخاب کند، از کاربر درخواست دهنده، جریمه کسر شده و به کاربر قبول کننده واریز می شود.

افزودن آگهی

در بازار نیپوتو ، دو آگهی وجود دارد: با قیمت ثابت و با قیمت متغیر.

برای افزودن آگهی با مقدار ثابت، می‌توانید از اندپوینت زیر استفاده نمایید.

POST /v1/p2p/offer/fixed


                response:
                نمونه درخواست:

                const data = {
                    paymentID: '20ee5eac-33c0-4642-82d9-62c74ba7b903',
                    side: 'bid',
                    minAmount: 5000,
                    maxAmount: 5000,
                    totalAmount: 10000,
                    fixedPrice: 59000,
                    paymentMethods: ['iban'],
                    acceptedDealTypes: ['future']
                }

                const method = 'POST'
                const url = '/v1/p2p/offer/fixed'
                const headers =  { authorization: `Bearer ${accessToken}` }

                const res = await axios({
                    url,
                    method,
                    headers,
                    data
                })

                نمونه پاسخ دریافتی

                res.data = {
                    side: 'bid',
                    minAmount: 5000,
                    maxAmount: 5000,
                    totalAmount: 10000,
                    priceType: 'fixed',
                    fixedPrice: 59000,
                    pricePercentage: 0,
                    exchangeName: '',
                    cancellationPenaltyPercentage: 1,
                    description: '',
                    acceptedDealTypes: [ 'future' ],
                    paymentMethods: [ 'iban' ],
                    activeDays: [
                        'SAT', 'SUN',
                        'MON', 'TUE',
                        'WED', 'THU',
                        'FRI'
                    ],
                    activeTimeFrom: '00:00:00',
                    activeTimeTo: '23:59:59',
                    humanID: 780402,
                    remainingAmount: 10000,
                    offerID: '70e5ca8f-edf1-44ce-a6e8-93f6de2e2234',
                    expiresAt: '2024-04-09T12:32:47.776Z',
                    paymentID: '20ee5eac-33c0-4642-82d9-62c74ba7b903'
                }
            
پارامتر نوع الزامی توضیحات نمونه
paymentID string بله یک آی‌دی که میخواهید به این آگهی اختصاص دهید. این آی‌دی حتما باید unique باشد 664b16d5-4e68-4ca3-a54c-d17f98f5f79a
side string بله قصد خرید(bid) تتر را دارید یا فروش(ask) 'ask'
minAmount string بله حداقل مقداری که قصد دارید طی هر معامله خرید یا فروش کنید. حداقل مقدار قابل قبول 5000تتر می باشد. 10000
maxAmount number بله حداکثر مقداری که قصد دارید طی هر معامله خرید یا فروش کنید. حداقل مقدار این پارامتر باید از minAmount بزرگتر یا برابر باشد. 10000
totalAmount number بله حداکثر مقداری که قصد دارید طی این آگهی معامله کنید. حداقل مقدار این پارامتر باید از maxAmount بزرگتر یا برابر باشد. 10000
fixedPrice number بله قیمتی که قصد دارید در آن به خرید یا فروش تتر بپردازید. 70000
paymentMethods array بله با استفاده از چه روشی می‌توانید ریال را دریافت یا پرداخت کنید. باید حداقل یک مورد فرستاده شود.
مقادیر مجاز را میتوانید در قسمت واژه‌شناسی، روش‌های پرداخت مشاهده نمایید.
['ibanPY']
acceptedDealTypes array بله نوع معامله‌ای که بر روی آگهی شما باز می‌شود از چه نوعی باشد؟
در صورتی که قصد دارید آگهی تسویه فردایی باز کنید، باید نقدی را نیز ارسال نمایید. مقادیر قابل قبول به شرح زیر است:
['spot'] یا ['spot', 'sputure'] و یا ['future']
['future']
cancellationPenaltyPercentage number خیر جریمه‌ای بین ۰.۵ تا ۲ درصد برای کنسلی معامله تعیین کنید. مقدار پیشفرض برابر با ۱ درصد میباشد. برای اطلاعات بیشتر به قسمت واژه شناسی، جریمه کنسلی مراجعه نمایید. 0.5
description string خیر توضیحات پرداخت از درگاه
expiresAt date خیر تاریخ انقضای آگهی. به صورت پیش فرض، این مقدار برابر با تاریخ و ساعت یک هفته بعد می باشد. پرداخت از درگاه
activeDays array خیر روزهایی از هفته که میخواهید آگهی شما نمایش داده شود. به صورت پیش فرض آگهی شما در تمام روزهای هفته نمایش داده می‌شود. مقادیر مجاز به شرح زیر است:
'SAT', 'SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI'
['THU', 'FRI']
activeTimeFrom string خیر آگهی شما ار چه ساعتی نمایش داردخ شود؟ مقدار پیش فرض برابر با 00:00:00 می باشد. 08:00 or 08:00:00
activeTimeTo string خیر آگهی شما تا چه ساعتی نمایش داده شود؟ مقدار پیش فرض برابر با 23:59:59 می‌باشد. 17:00 or 17:00:00

برای افزودن آگهی با مقدار متغیر، می‌توانید از اندپوینت زیر استفاده نمایید.

POST /v1/p2p/offer/flex


            response:
                نمونه درخواست:

                const data = {
                    paymentID: '20ee5eac-33c0-4642-82d9-62c74ba7b903',
                    side: 'bid',
                    minAmount: 5000,
                    maxAmount: 5000,
                    totalAmount: 10000,
                    fixedPrice: 59000,
                    paymentMethods: ['iban'],
                    acceptedDealTypes: ['future']
                    }

                    const method = 'POST'
                    const url = '/v1/p2p/offer/fixed'
                    const headers =  { authorization: `Bearer ${accessToken}` }

                    const res = await axios({
                    url,
                    method,
                    headers,
                    data
                    })

                نمونه پاسخ دریافتی

                res.data = {
                    side: 'bid',
                    minAmount: 5000,
                    maxAmount: 5000,
                    totalAmount: 10000,
                    priceType: 'fixed',
                    fixedPrice: 59000,
                    pricePercentage: 0,
                    exchangeName: '',
                    cancellationPenaltyPercentage: 1,
                    description: '',
                    acceptedDealTypes: [ 'future' ],
                    paymentMethods: [ 'iban' ],
                    activeDays: [
                        'SAT', 'SUN',
                        'MON', 'TUE',
                        'WED', 'THU',
                        'FRI'
                    ],
                    activeTimeFrom: '00:00:00',
                    activeTimeTo: '23:59:59',
                    humanID: 780402,
                    remainingAmount: 10000,
                    offerID: '70e5ca8f-edf1-44ce-a6e8-93f6de2e2234',
                    expiresAt: '2024-04-09T12:32:47.776Z',
                    paymentID: '20ee5eac-33c0-4642-82d9-62c74ba7b903'
                }
             
پارامتر نوع الزامی توضیحات نمونه
paymentID string بله یک آی‌دی که میخواهید به این آگهی اختصاص دهید. این آی‌دی حتما باید unique باشد 664b16d5-4e68-4ca3-a54c-d17f98f5f79a
side string بله قصد خرید(bid) تتر را دارید یا فروش(ask) 'ask'
minAmount string بله حداقل مقداری که قصد دارید طی هر معامله خرید یا فروش کنید. حداقل مقدار قابل قبول 5000تتر می باشد. 10000
maxAmount number بله حداکثر مقداری که قصد دارید طی هر معامله خرید یا فروش کنید. حداقل مقدار این پارامتر باید از minAmount بزرگتر یا برابر باشد. 10000
totalAmount number بله حداکثر مقداری که قصد دارید طی این آگهی معامله کنید. حداقل مقدار این پارامتر باید از maxAmount بزرگتر یا برابر باشد. 10000
fixedPrice number بله قیمتی که قصد دارید در آن به خرید یا فروش تتر بپردازید. 70000
paymentMethods array بله با استفاده از چه روشی می‌توانید ریال را دریافت یا پرداخت کنید. باید حداقل یک مورد فرستاده شود.
مقادیر مجاز را میتوانید در قسمت واژه‌شناسی، روش‌های پرداخت مشاهده نمایید.
['ibanPY']
acceptedDealTypes array بله نوع معامله‌ای که بر روی آگهی شما باز می‌شود از چه نوعی باشد؟
در صورتی که قصد دارید آگهی تسویه فردایی باز کنید، باید نقدی را نیز ارسال نمایید. مقادیر قابل قبول به شرح زیر است:
['spot'] یا ['spot', 'sputure'] و یا ['future']
['future']
cancellationPenaltyPercentage number خیر جریمه‌ای بین ۰.۵ تا ۲ درصد برای کنسلی معامله تعیین کنید. مقدار پیشفرض برابر با ۱ درصد میباشد. برای اطلاعات بیشتر به قسمت واژه شناسی، جریمه کنسلی مراجعه نمایید. 0.5
description string خیر توضیحات پرداخت از درگاه
expiresAt date خیر تاریخ انقضای آگهی. به صورت پیش فرض، این مقدار برابر با تاریخ و ساعت یک هفته بعد می باشد. پرداخت از درگاه
activeDays array خیر روزهایی از هفته که میخواهید آگهی شما نمایش داده شود. به صورت پیش فرض آگهی شما در تمام روزهای هفته نمایش داده می‌شود. مقادیر مجاز به شرح زیر است:
'SAT', 'SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI'
['THU', 'FRI']
activeTimeFrom string خیر آگهی شما ار چه ساعتی نمایش داردخ شود؟ مقدار پیش فرض برابر با 00:00:00 می باشد. 08:00 or 08:00:00
activeTimeTo string خیر آگهی شما تا چه ساعتی نمایش داده شود؟ مقدار پیش فرض برابر با 23:59:59 می‌باشد. 17:00 or 17:00:00

لغو آگهی

برای لغو آگهی میتوانید از اندپوینت زیر استفاده کنید.

DELETE /v1/p2p/offer/:id


                response:

                const offerID = '2d1cd1e0-aba8-4154-a22d-aeeb2d258a27'
                const method = 'DELETE'
                const url = '/v1/p2p/offer/:id'.replace(':id', offerID)
                const headers =  { authorization: `Bearer ${accessToken}` }

                const res = await axios({
                url,
                method,
                headers
                })

                res.data = { code: 'SUCCESS', message: 'success' }
             

تغییر وضعیت آگهی

برای فعال یا غیرفعال کردن موقتی آگهی می‌توانید از اندپوینت زیر استفاده کنید.

PATCH /v1/p2p/offer/:id/activated


                response:

                const offerID = 'aa0bd5a3-2264-4954-9005-e1c682d0639b'
                const method = 'PATCH'
                const url = '/v1/p2p/offer/:id/activated'.replace(':id', offerID)
                const headers =  { authorization: `Bearer ${accessToken}` }

                const res = await axios({
                    url,
                    method,
                    headers,
                    data: { activated: false }
                })

                res.data = { code: 'SUCCESS', message: 'success' }
             

آپدیت آگهی

برای آپدیت آگهی باید حداقل یکی از پارامترهای زیر را ارسال کنید.


                response:

                const offerID = 'aa0bd5a3-2264-4954-9005-e1c682d0639b'
                const method = 'PUT'
                const url = '/v1/p2p/offer/:id'.replace(':id', offerID)
                const headers =  { authorization: `Bearer ${accessToken}` }

                const res = await axios({
                    url,
                    method,
                    headers,
                    data: {
                    priceType: 'fixed',
                    fixedPrice: 64000
                    }
                })

                res.data = {
                    minAmount: 6000,
                    maxAmount: 10000,
                    totalAmount: 10000,
                    priceType: 'fixed',
                    fixedPrice: 50000,
                    pricePercentage: 0,
                    exchangeName: '',
                    paymentMethods: [ 'MELLI' ],
                    acceptedDealTypes: [ 'spot' ],
                    cancellationPenaltyPercentage: 0.5,
                    description: '',
                    expiredAt: '2024-04-09T13:07:26.610Z',
                    activeTimeFrom: '08:29:59',
                    activeTimeTo: '12:30:00',
                    offerID: 'aa0bd5a3-2264-4954-9005-e1c682d0639b',
                    activeDays: [ 'MON', 'TUE', 'WED' ]
                    }
               
پارامتر نوع الزامی توضیحات نمونه
paymentID string بله یک آی‌دی که میخواهید به این آگهی اختصاص دهید. این آی‌دی حتما باید unique باشد 664b16d5-4e68-4ca3-a54c-d17f98f5f79a
side string بله قصد خرید(bid) تتر را دارید یا فروش(ask) 'ask'
minAmount string بله حداقل مقداری که قصد دارید طی هر معامله خرید یا فروش کنید. حداقل مقدار قابل قبول 5000تتر می باشد. 10000
maxAmount number بله حداکثر مقداری که قصد دارید طی هر معامله خرید یا فروش کنید. حداقل مقدار این پارامتر باید از minAmount بزرگتر یا برابر باشد. 10000
totalAmount number بله حداکثر مقداری که قصد دارید طی این آگهی معامله کنید. حداقل مقدار این پارامتر باید از maxAmount بزرگتر یا برابر باشد. 10000
fixedPrice number بله قیمتی که قصد دارید در آن به خرید یا فروش تتر بپردازید. 70000
paymentMethods array بله با استفاده از چه روشی می‌توانید ریال را دریافت یا پرداخت کنید. باید حداقل یک مورد فرستاده شود.
مقادیر مجاز را میتوانید در قسمت واژه‌شناسی، روش‌های پرداخت مشاهده نمایید.
['ibanPY']
acceptedDealTypes array بله نوع معامله‌ای که بر روی آگهی شما باز می‌شود از چه نوعی باشد؟
در صورتی که قصد دارید آگهی تسویه فردایی باز کنید، باید نقدی را نیز ارسال نمایید. مقادیر قابل قبول به شرح زیر است:
['spot'] یا ['spot', 'sputure'] و یا ['future']
['future']
cancellationPenaltyPercentage number خیر جریمه‌ای بین ۰.۵ تا ۲ درصد برای کنسلی معامله تعیین کنید. مقدار پیشفرض برابر با ۱ درصد میباشد. برای اطلاعات بیشتر به قسمت واژه شناسی، جریمه کنسلی مراجعه نمایید. 0.5
description string خیر توضیحات پرداخت از درگاه
expiresAt date خیر تاریخ انقضای آگهی. به صورت پیش فرض، این مقدار برابر با تاریخ و ساعت یک هفته بعد می باشد. پرداخت از درگاه
activeDays array خیر روزهایی از هفته که میخواهید آگهی شما نمایش داده شود. به صورت پیش فرض آگهی شما در تمام روزهای هفته نمایش داده می‌شود. مقادیر مجاز به شرح زیر است:
'SAT', 'SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI'
['THU', 'FRI']
activeTimeFrom string خیر آگهی شما ار چه ساعتی نمایش داردخ شود؟ مقدار پیش فرض برابر با 00:00:00 می باشد. 08:00 or 08:00:00
activeTimeTo string خیر آگهی شما تا چه ساعتی نمایش داده شود؟ مقدار پیش فرض برابر با 23:59:59 می‌باشد. 17:00 or 17:00:00

PUT /v1/p2p/offer/:id

دریافت یک آگهی

برای دریافت یکی از آگهی‌های خود می توانید از اندپوینت زیر استفاده کنید.

GET /v1/p2p/offer/:id


                response:

                const offerID = 'aa0bd5a3-2264-4954-9005-e1c682d0639b'
                const method = 'GET'
                const url = '/v1/p2p/offer/:id'.replace(':id', offerID)
                const headers =  { authorization: `Bearer ${accessToken}` }

                const res = await axios({
                    url,
                    method,
                    headers
                })

                res.data = {
                    offerID: 'aa0bd5a3-2264-4954-9005-e1c682d0639b',
                    side: 'ask',
                    cancellationPenaltyPercentage: 0.5,
                    minAmount: 6000,
                    maxAmount: 10000,
                    totalAmount: 10000,
                    remainingAmount: 10000,
                    inDeal: 0,
                    priceType: 'fixed',
                    fixedPrice: 50000,
                    pricePercentage: 0,
                    exchangeName: '',
                    paymentMethods: [ 'MELLI' ],
                    acceptedDealTypes: [ 'spot' ],
                    activeDays: [ 'MON', 'TUE', 'WED' ],
                    activeTimeFrom: '08:29:59',
                    activeTimeTo: '12:30:00',
                    humanID: 720402,
                    isOfferInactivatedByUser: true,
                    status: 'active',
                    createdAt: '2024-04-02T13:07:26.766Z',
                    modifiedAt: '2024-04-03T06:38:54.939Z',
                    expiresAt: '2024-04-09T13:07:26.610Z',
                    description: ''
                }
            

دریافت لیست آگهی ها

برای دریافت لیست آگهی‌های خود می توانید از اندپوینت زیر استفاده کنید.

GET /v1/p2p/offer


                response:

                const url = '/v1/p2p/offer?paymentID=46ea7c65-5f98-44cb-9b37-b38bdfa44a2a'
                const headers =  { authorization: `Bearer ${accessToken}` }

                const res = await axios({
                    url,
                    method,
                    headers
                })

                res.data = {
                    side: 'ask',
                    minAmount: 5000,
                    maxAmount: 10000,
                    totalAmount: 15000,
                    priceType: 'fixed',
                    fixedPrice: 61000,
                    pricePercentage: 0,
                    exchangeName: '',
                    cancellationPenaltyPercentage: 1,
                    description: '',
                    acceptedDealTypes: [ 'spot' ],
                    paymentMethods: [ 'MELLI' ],
                    activeDays: [
                        'SAT', 'SUN',
                        'MON', 'TUE',
                        'WED', 'THU',
                        'FRI'
                    ],
                    activeTimeFrom: '00:00:00',
                    activeTimeTo: '23:59:59',
                    humanID: 940403,
                    remainingAmount: 15000,
                    offerID: '06e34848-2714-4dbc-b5ce-1bac38618392',
                    expiresAt: '2024-04-10T08:03:35.378Z',
                    paymentID: '46ea7c65-5f98-44cb-9b37-b38bdfa44a2a'
                }

                const url = '/v1/p2p/offer?side=bid'
                const headers =  { authorization: `Bearer ${accessToken}` }

                const res = await axios({
                url,
                method,
                headers
                })

                res.data = [
                {
                    offerID: 'eb708a32-0575-496f-afcf-7d6e2d02ddee',
                    side: 'bid',
                    cancellationPenaltyPercentage: 1,
                    minAmount: 5000,
                    maxAmount: 10000,
                    totalAmount: 15000,
                    remainingAmount: 15000,
                    inDeal: 0,
                    priceType: 'fixed',
                    fixedPrice: 61000,
                    pricePercentage: 0,
                    exchangeName: '',
                    paymentMethods: [ 'MELLI' ],
                    acceptedDealTypes: [ 'future' ],
                    activeDays: [
                    'SAT', 'SUN',
                    'MON', 'TUE',
                    'WED', 'THU',
                    'FRI'
                    ],
                    activeTimeFrom: '00:00:00',
                    activeTimeTo: '23:59:59',
                    humanID: 190403,
                    isOfferInactivatedByUser: false,
                    status: 'active',
                    createdAt: '2024-04-03T08:03:06.343Z',
                    modifiedAt: '2024-04-03T08:03:35.439Z',
                    expiresAt: '2024-04-10T08:03:06.206Z',
                    description: ''
                },
                {
                    offerID: '1c63eaf1-ecdc-4299-97af-9774a5b0cddd',
                    side: 'bid',
                    cancellationPenaltyPercentage: 1,
                    minAmount: 10000,
                    maxAmount: 30000,
                    totalAmount: 100000,
                    remainingAmount: 60000,
                    inDeal: 0,
                    priceType: 'fixed',
                    fixedPrice: 64000,
                    pricePercentage: 0,
                    exchangeName: '',
                    paymentMethods: [ 'SAMAN' ],
                    acceptedDealTypes: [ 'spot' ],
                    activeDays: [
                    'SAT', 'SUN',
                    'MON', 'TUE'
                    ],
                    activeTimeFrom: '00:00:00',
                    activeTimeTo: '23:59:59',
                    humanID: 370403,
                    isOfferInactivatedByUser: false,
                    status: 'active',
                    createdAt: '2024-04-03T08:03:31.919Z',
                    modifiedAt: '2024-04-03T08:03:35.439Z',
                    expiresAt: '2024-04-10T08:03:31.735Z',
                    description: ''
                }
                ]
            

مقادیری که به عنوان فیلتر میتوانید ارسال کنید به شرح زیر است:

پارامتر نوع الزامی توضیحات نمونه
side string خیر آگهی های خرید کاربر بازگردند یا آگهی های فروش؟ ask
startDate date خیر فیلتر لیست آگهی ها بر اساس زمان. 2024-04-02T00:00:00
endDate date خیر فیلتر لیست آگهی ها بر اساس زمان. 2024-04-03T00:00:00
paymentID string خیر آی دی که پیشتر برای افزودن آگهی به آگهی اختصاص داده اید. در صورتی که این پارامتر فرستاده شود سایر فیلتر ها نادیده گرفته خواهد شد. 20ee5eac-33c0-4642-82d9-62c74ba7b903
pageNumber number خیر به منظور pagination از این پارامتر استفاده میشود. مقدار آن به صورت پیش فرض برابر با یک است. 2
pageCount number خیر به منظور pagination از این پارامتر استفاده میشود. مقدار آن به صورت پیش فرض برابر با بیست است. 10

دریافت تاریخچه آگهی ها

برای دریافت تاریخچه آگهی‌های خود می توانید از اندپوینت زیر استفاده کنید.

GET /v1/p2p/offer/history


                response:

                const url = '/v1/p2p/offer/history'
                const method = 'GET'
                const headers =  { authorization: `Bearer ${accessToken}` }

                const res = await axios({
                    url,
                    method,
                    headers
                })

                res.data = [
                {
                    offerID: '06e34848-2714-4dbc-b5ce-1bac38618392',
                    side: 'ask',
                    cancellationPenaltyPercentage: 1,
                    minAmount: 5000,
                    maxAmount: 10000,
                    totalAmount: 15000,
                    remainingAmount: 15000,
                    inDeal: 0,
                    priceType: 'fixed',
                    fixedPrice: 61000,
                    pricePercentage: 0,
                    exchangeName: '',
                    paymentMethods: [ 'MELLI' ],
                    acceptedDealTypes: [ 'spot' ],
                    activeDays: [
                    'SAT', 'SUN',
                    'MON', 'TUE',
                    'WED', 'THU',
                    'FRI'
                    ],
                    activeTimeFrom: '00:00:00',
                    activeTimeTo: '23:59:59',
                    humanID: 940403,
                    isOfferInactivatedByUser: false,
                    status: 'canceled',
                    createdAt: '2024-04-03T08:03:35.431Z',
                    modifiedAt: '2024-04-03T08:14:31.500Z',
                    expiresAt: '2024-04-10T08:03:35.378Z',
                    description: ''
                }
                ]
            

مقادیری که به عنوان فیلتر میتوانید ارسال کنید به شرح زیر است:

پارامتر نوع الزامی توضیحات نمونه
side string خیر آگهی های خرید کاربر بازگردند یا آگهی های فروش؟ ask
startDate date خیر فیلتر لیست آگهی ها بر اساس زمان. 2024-04-02T00:00:00
endDate date خیر فیلتر لیست آگهی ها بر اساس زمان. 2024-04-03T00:00:00
paymentID string خیر آی دی که پیشتر برای افزودن آگهی به آگهی اختصاص داده اید. در صورتی که این پارامتر فرستاده شود سایر فیلتر ها نادیده گرفته خواهد شد. 20ee5eac-33c0-4642-82d9-62c74ba7b903
pageNumber number خیر به منظور pagination از این پارامتر استفاده میشود. مقدار آن به صورت پیش فرض برابر با یک است. 2
pageCount number خیر به منظور pagination از این پارامتر استفاده میشود. مقدار آن به صورت پیش فرض برابر با بیست است. 10

دریافت آگهی های فعال

برای دریافت آگهی‌های فعال خود می توانید از اندپوینت زیر استفاده کنید.

GET /v1/p2p/offer/active


                response:

                const url = '/v1/p2p/offer/active?side=ask'
                const method = 'GET'
                const headers =  { authorization: `Bearer ${accessToken}` }

                const res = await axios({
                    url,
                    method,
                    headers
                })

                res.data = [
                {
                    offerID: '06e34848-2714-4dbc-b5ce-1bac38618392',
                    side: 'ask',
                    cancellationPenaltyPercentage: 1,
                    minAmount: 5000,
                    maxAmount: 10000,
                    totalAmount: 15000,
                    remainingAmount: 15000,
                    inDeal: 0,
                    priceType: 'fixed',
                    fixedPrice: 61000,
                    pricePercentage: 0,
                    exchangeName: '',
                    paymentMethods: [ 'MELLI' ],
                    acceptedDealTypes: [ 'spot' ],
                    activeDays: [
                    'SAT', 'SUN',
                    'MON', 'TUE',
                    'WED', 'THU',
                    'FRI'
                    ],
                    activeTimeFrom: '00:00:00',
                    activeTimeTo: '23:59:59',
                    humanID: 940403,
                    isOfferInactivatedByUser: false,
                    status: 'canceled',
                    createdAt: '2024-04-03T08:03:35.431Z',
                    modifiedAt: '2024-04-03T08:14:31.500Z',
                    expiresAt: '2024-04-10T08:03:35.378Z',
                    description: ''
                }
                ]
            

مقادیری که به عنوان فیلتر میتوانید ارسال کنید به شرح زیر است:

پارامتر نوع الزامی توضیحات نمونه
side string خیر آگهی های خرید کاربر بازگردند یا آگهی های فروش؟ ask
startDate date خیر فیلتر لیست آگهی ها بر اساس زمان. 2024-04-02T00:00:00
endDate date خیر فیلتر لیست آگهی ها بر اساس زمان. 2024-04-03T00:00:00
paymentID string خیر آی دی که پیشتر برای افزودن آگهی به آگهی اختصاص داده اید. در صورتی که این پارامتر فرستاده شود سایر فیلتر ها نادیده گرفته خواهد شد. 20ee5eac-33c0-4642-82d9-62c74ba7b903
pageNumber number خیر به منظور pagination از این پارامتر استفاده میشود. مقدار آن به صورت پیش فرض برابر با یک است. 2
pageCount number خیر به منظور pagination از این پارامتر استفاده میشود. مقدار آن به صورت پیش فرض برابر با بیست است. 10

دریافت آفربوک

برای دریافت آفربوک می توانید از اندپوینت زیر استفاده کنید. از هر سمت آگهی، تا ۵ رکورد بازمی‌گردد.

GET /v1/p2p/offer_book


                response:

                const url = '/v1/p2p/offer_book'
                const method = 'GET'
                const headers =  { authorization: `Bearer ${accessToken}` }

                const res = await axios({
                    url,
                    method,
                    headers
                })

                res.data = [
                  {
                    offerID: 'c3a68adb-2931-442f-9f2f-17297ef9b607',
                    price: 65000,
                    minAmount: 5000,
                    maxAmount: 10000,
                    side: 'ask',
                    acceptedDealTypes: [ 'future' ],
                    username: 'askUser',
                    paymentMethods: [ 'iban' ]
                  },
                  {
                    offerID: '1c63eaf1-ecdc-4299-97af-9774a5b0cddd',
                    price: 64000,
                    minAmount: 10000,
                    maxAmount: 30000,
                    side: 'bid',
                    acceptedDealTypes: [ 'spot' ],
                    username: 'bidUser',
                    paymentMethods: [ 'MELLI' ]
                  },
                  {
                    offerID: 'eb708a32-0575-496f-afcf-7d6e2d02ddee',
                    price: 61000,
                    minAmount: 5000,
                    maxAmount: 10000,
                    side: 'bid',
                    acceptedDealTypes: [ 'future' ],
                    username: 'bidUser',
                    paymentMethods: [ 'SAMAN' ]
                  }
                ]
            

افزودن معامله

برای افزودن معامله میتوانید از اندپوینت زیر استفاده کنید. قبل از ارسال درخواست میتوانید با استفاده از اندپوینت مربوط به آفربوک از نوع معامله‌ای که کاربر آگهی گذار برای آگهی خود تعیین کرده است مطلع شوید. در صورتی که dealType ارسالی مورد قبول آفر مربوطه نباشد درخواست شما رد خواهد شد.


                response:

                const url = '/v1/p2p/deal'
                const method = 'POST'
                const headers =  { authorization: `Bearer ${accessToken}` }
                const data = { offerID: '1c63eaf1-ecdc-4299-97af-9774a5b0cddd', dealType: 'spot', amount: 15000, paymentID: uuid() }

                const res = await axios({
                  url,
                  method,
                  headers,
                  data
                })

                res.data = {
                    dealID: '56da6af8-9b10-419b-abf7-87fb9544cd12',
                    offerID: '1c63eaf1-ecdc-4299-97af-9774a5b0cddd',
                    dealType: 'spot',
                    amount: 15000,
                    paymentID: 'af41c1b1-050c-4c97-bd32-9376e6554b76'
                  }
           
پارامتر نوع الزامی توضیحات نمونه
paymentID string بله یک آی‌دی که میخواهید به این معامله اختصاص دهید. این آی‌دی حتما باید unique باشد. 'ddd0c554-0b6e-4113-a198-610202fe39a9'
offerID string بله آی دی آگهی ای که میخواهید بر روی آن آفر اد کنید 'eb708a32-0575-496f-afcf-7d6e2d02ddee'
dealType string بله نوع معامله از چه نوعی باشد.
این پارامتر باید با توجه به acceptedDealTypes آفری که میخواهید بر روی آن معامله باز کنید فرستاده شود
در غیر این صورت درخواست شما رد خواهد شد.
'future'
amount number بله آمقدار معامله 10000

POST /v1/p2p/deal

گرفتن اطلاعات یک معامله

برای دریافت اطلاعات یک معامله میتوانید از اندپوینت زیر استفاده کنید.

GET /v1/p2p/deal/:id


                const dealID = '56da6af8-9b10-419b-abf7-87fb9544cd12'
                const method = 'GET'
                const url = '/v1/p2p/deal/:id'.replace(':id', dealID)
                const headers =  { authorization: `Bearer ${accessToken}` }

                const res = await axios({
                  url,
                  method,
                  headers
                })

                res.data = {
                    dealID: '56da6af8-9b10-419b-abf7-87fb9544cd12',
                    offerID: '1c63eaf1-ecdc-4299-97af-9774a5b0cddd',
                    askUsername: 'askUser',
                    bidUsername: 'bidUser',
                    dealType: 'spot',
                    paymentMethod: 'MELLI',
                    amount: 15000,
                    price: 64000,
                    askFee: 0,
                    bidFee: 0,
                    cancellationPenalty: 150,
                    cancellationFee: 30,
                    cancellationRequestedBy: null,
                    cancellationRequestedAt: null,
                    hasCancellationPenalty: false,
                    hasArbitration: false,
                    humanID: 320403,
                    status: 'opened',
                    createdAt: '2024-04-03T09:50:46.025Z',
                    updatedAt: '2024-04-03T09:50:46.025Z'
                  }
            

گرفتن معاملات

برای دریافت لیست معاملات میتوانید از اندپوینت زیر استفاده کنید.

GET /v1/p2p/deal

مقادیری که به عنوان فیلتر میتوانید ارسال کنید به شرح زیر است:


                    response:

                    const method = 'GET'
                    const url = '/v1/p2p/deal?paymentID=af41c1b1-050c-4c97-bd32-9376e6554b76'
                    const headers =  { authorization: `Bearer ${accessToken}` }

                    const res = await axios({
                        url,
                        method,
                        headers
                    })

                  res.data = {
                      dealID: '56da6af8-9b10-419b-abf7-87fb9544cd12',
                      offerID: '1c63eaf1-ecdc-4299-97af-9774a5b0cddd',
                      askUsername: 'askUser',
                      bidUsername: 'bidUser',
                      dealType: 'spot',
                      paymentMethod: 'MELLI',
                      amount: 15000,
                      price: 64000,
                      askFee: 0,
                      bidFee: 0,
                      cancellationPenalty: 150,
                      cancellationFee: 30,
                      cancellationRequestedBy: null,
                      cancellationRequestedAt: null,
                      hasCancellationPenalty: false,
                      hasArbitration: false,
                      humanID: 320403,
                      status: 'opened',
                      createdAt: '2024-04-03T09:50:46.025Z',
                      updatedAt: '2024-04-03T09:50:46.025Z'
                    }

                    const method = 'GET'
                    const url = '/v1/p2p/deal?pageCount=2'
                    const headers =  { authorization: `Bearer ${accessToken}` }

                    const res = await axios({
                      url,
                      method,
                      headers
                    })

                res.data =  [
                  {
                    dealID: '56da6af8-9b10-419b-abf7-87fb9544cd12',
                    offerID: '1c63eaf1-ecdc-4299-97af-9774a5b0cddd',
                    askUsername: 'askUser',
                    bidUsername: 'bidUser',
                    dealType: 'spot',
                    paymentMethod: 'MELLI',
                    amount: 15000,
                    price: 64000,
                    askFee: 0,
                    bidFee: 0,
                    cancellationPenalty: 150,
                    cancellationFee: 30,
                    cancellationRequestedBy: null,
                    cancellationRequestedAt: null,
                    hasCancellationPenalty: false,
                    hasArbitration: false,
                    humanID: 320403,
                    status: 'opened',
                    createdAt: '2024-04-03T09:50:46.025Z',
                    updatedAt: '2024-04-03T09:50:46.025Z'
                  },
                  {
                    dealID: 'b94f99df-2820-42d0-9ed0-560932c8d5d6',
                    offerID: '1c63eaf1-ecdc-4299-97af-9774a5b0cddd',
                    askUsername: 'askUser',
                    bidUsername: 'bidUser',
                    dealType: 'spot',
                    paymentMethod: 'MELLI',
                    amount: 10000,
                    price: 64000,
                    askFee: 0,
                    bidFee: 0,
                    cancellationPenalty: 100,
                    cancellationFee: 20,
                    cancellationRequestedBy: null,
                    cancellationRequestedAt: null,
                    hasCancellationPenalty: false,
                    hasArbitration: false,
                    humanID: 480403,
                    status: 'opened',
                    createdAt: '2024-04-03T09:50:41.228Z',
                    updatedAt: '2024-04-03T09:50:41.228Z'
                  }
                ]
            
پارامتر نوع الزامی توضیحات نمونه
startDate date خیر فیلتر لیست معاملات بر اساس زمان. 2024-04-02T00:00:00
endDate date بله فیلتر لیست معاملات بر اساس زمان. 2024-04-03T00:00:00
paymentID string خیر آی دی که پیشتر هنگام افزودن معامله به معامله اختصاص داده اید.
در صورتی که این پارامتر فرستاده شود سایر فیلتر ها نادیده گرفته خواهد شد
20ee5eac-33c0-4642-82d9-62c74ba7b903
pageNumber number خیر به منظور pagination از این پارامتر استفاده میشود. مقدار آن به صورت پیش فرض برابر با یک است. 2
pageCount number خیر به منظور pagination از این پارامتر استفاده میشود. مقدار آن به صورت پیش فرض برابر با یک است. 10

دریافت لیست معاملات فعال

برای دریافت لیست معاملات فعال میتوانید از اندپوینت زیر استفاده کنید.

GET /v1/p2p/deal/active


                response:

                const method = 'GET'
                const url = '/v1/p2p/deal/active'
                const headers =  { authorization: `Bearer ${accessToken}` }

                const res = await axios({
                  url,
                  method,
                  headers
                })

                res.data =  [
                  {
                    dealID: 'c9017d65-9e22-42e0-a832-0abca89b5f25',
                    offerID: 'eb708a32-0575-496f-afcf-7d6e2d02ddee',
                    askUsername: 'askUser',
                    bidUsername: 'bidUser',
                    dealType: 'future',
                    paymentMethods: ['SADERAT'],
                    amount: 5000,
                    price: 61000,
                    askFee: 0,
                    bidFee: 0,
                    cancellationPenalty: 50,
                    cancellationFee: 10,
                    cancellationRequestedBy: null,
                    cancellationRequestedAt: null,
                    hasCancellationPenalty: false,
                    hasArbitration: false,
                    humanID: 500403,
                    status: 'opened',
                    createdAt: '2024-04-03T09:49:15.112Z',
                    updatedAt: '2024-04-03T09:49:15.112Z'
                  }

                ]
            
پارامتر نوع الزامی توضیحات نمونه
startDate date خیر فیلتر لیست معاملات بر اساس زمان. 2024-04-02T00:00:00
endDate date بله فیلتر لیست معاملات بر اساس زمان. 2024-04-03T00:00:00
paymentID string خیر آی دی که پیشتر هنگام افزودن معامله به معامله اختصاص داده اید.
در صورتی که این پارامتر فرستاده شود سایر فیلتر ها نادیده گرفته خواهد شد
20ee5eac-33c0-4642-82d9-62c74ba7b903
pageNumber number خیر به منظور pagination از این پارامتر استفاده میشود. مقدار آن به صورت پیش فرض برابر با یک است. 2
pageCount number خیر به منظور pagination از این پارامتر استفاده میشود. مقدار آن به صورت پیش فرض برابر با یک است. 10

دریافت تاریخچه معاملات

برای دریافت تاریخچه معاملات فعال میتوانید از اندپوینت زیر استفاده کنید.

GET /v1/p2p/deal/history


            response:

            const method = 'GET'
            const url = '/v1/p2p/deal/active'
            const headers =  { authorization: `Bearer ${accessToken}` }

            const res = await axios({
              url,
              method,
              headers
            })

            res.data =  [
              {
                dealID: '56da6af8-9b10-419b-abf7-87fb9544cd12',
                offerID: '1c63eaf1-ecdc-4299-97af-9774a5b0cddd',
                askUsername: 'askUser',
                bidUsername: 'bidUser',
                dealType: 'spot',
                amount: 15000,
                price: 64000,
                askFee: 0,
                bidFee: 0,
                cancellationPenalty: 150,
                cancellationFee: 30,
                cancellationRequestedBy: null,
                cancellationRequestedAt: null,
                hasCancellationPenalty: false,
                hasArbitration: false,
                humanID: 320403,
                status: 'done',
                createdAt: '2024-04-03T09:50:46.025Z',
                updatedAt: '2024-04-03T13:04:52.063Z',
                paymentMethods: ['MELLI']
              },
              {
                dealID: 'c9017d65-9e22-42e0-a832-0abca89b5f25',
                offerID: 'eb708a32-0575-496f-afcf-7d6e2d02ddee',
                askUsername: 'askUser',
                bidUsername: 'bidUser',
                dealType: 'future',
                amount: 5000,
                price: 61000,
                askFee: 0,
                bidFee: 0,
                cancellationPenalty: 50,
                cancellationFee: 10,
                cancellationRequestedBy: 'askUser',
                cancellationRequestedAt: '2024-04-03T13:00:24.406Z',
                hasCancellationPenalty: false,
                hasArbitration: false,
                humanID: 500403,
                status: 'canceled',
                createdAt: '2024-04-03T09:49:15.112Z',
                updatedAt: '2024-04-03T13:00:24.440Z',
                paymentMethods: ['MELLAT']
              }
            ]
        
پارامتر نوع الزامی توضیحات نمونه
startDate date خیر فیلتر لیست معاملات بر اساس زمان. 2024-04-02T00:00:00
endDate date بله فیلتر لیست معاملات بر اساس زمان. 2024-04-03T00:00:00
paymentID string خیر آی دی که پیشتر هنگام افزودن معامله به معامله اختصاص داده اید.
در صورتی که این پارامتر فرستاده شود سایر فیلتر ها نادیده گرفته خواهد شد
20ee5eac-33c0-4642-82d9-62c74ba7b903
pageNumber number خیر به منظور pagination از این پارامتر استفاده میشود. مقدار آن به صورت پیش فرض برابر با یک است. 2
pageCount number خیر به منظور pagination از این پارامتر استفاده میشود. مقدار آن به صورت پیش فرض برابر با یک است. 10

دریافت بالانس p2p

برای دریافت بالان میتوانید از اندپوینت زیر استفاده کنید.

GET /v1/p2p/balance


                نمونه درخواست:
                response:

                const method = 'GET'
                const url = '/v1/p2p/balance'
                const headers =  { authorization: `Bearer ${accessToken}` }

                const res = await axios({
                  url,
                  method,
                  headers
                })

                نمونه پاسخ:
                res.data = {
                    IRT: {
                        active: 1000000000,
                        inuse: 0,
                        pending: 0
                    },
                    USDT: {
                        active: 999984000,
                        inuse: 1000,
                        pending: 0
                    }
                }
            
پارامتر نوع الزامی توضیحات نمونه
currency string خیر .نام ارزی که میخواهید فقط بالانس آن بازگردد USDT