[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"wp-translations":3,"fetchDocsBySlug-apiv2-ru":10},{"post":4,"docs":7},[5,6],"EN","RU",[5,8,6,9],"ES","UA",{"id":11,"title":12,"slug":13,"date":14,"status":15,"content":16,"language":17,"translations":18,"seo":24,"apiDocFields":33,"featuredImage":29,"postsnotation":34},"cG9zdDoxMjM5","APIv2","apiv2","2024-09-11T10:15:22","publish","\u003Cp>\u003Cb>Следующие методы используются для расширения возможностей вашего сервиса с помощью функций обмена Swapgate.io.\u003C\u002Fb>\u003C\u002Fp>\n\u003Ch2>Алгоритм\u003C\u002Fh2>\n\u003Cp>Swapgate использует систему алгоритмов курсов для создания прогнозов обменных курсов, используя анализ ликвидности рынка поставщиков. В то время как поток по алгоритму выполняет анализ рынка и возвращает реалистично рассчитанный по умолчанию результат, параметры наценки могут формироваться на курсе, возвращаемый алгоритмом прогнозирования курса.\u003C\u002Fp>\n\u003Cp>Параметр наценки влияет на предварительный расчетный курс, возвращаемый нашей системой, следующим образом:\u003C\u002Fp>\n\u003Cblockquote>\u003Cp>                                                                            A \u003Csub>окончательный\u003C\u002Fsub> ​=A \u003Csub>расчетный\u003C\u002Fsub> ∗ (1 − K \u003Csub>надбавка\u003C\u002Fsub> \u002F 100)\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Ctable>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Финал​\u003C\u002Ftd>\n\u003Ctd>Окончательная итоговая сумма, прогнозируемая для обмена\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Расчетный\u003Csub>​\u003C\u002Fsub>\u003C\u002Ftd>\n\u003Ctd>Первоначальная дата для получения прогноза по обмену\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>К- разметка\u003C\u002Ftd>\n\u003Ctd>значение параметра разметки\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>Исходя из представленной формулы, величина наценки 0,3, предусмотренная для обмена 1 BTC → USDT, дает следующие результаты, в результате чего итоговый прогноз увеличивается на 0,3%:\u003C\u002Fp>\n\u003Cblockquote>\u003Cp>                                                                       49549,728053855135 * (1 – 0,3\u002F100) = 49401,07886969357\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Ch2>API\u003C\u002Fh2>\n\u003Cp>Данные о тарифах можно получить с помощью API v1, обратившись к \u003Cstrong>\u002Fapi\u002Fv1\u002Frates\u002Fpublic\u002Fone endpoint\u003C\u002Fstrong> .\u003C\u002Fp>\n\u003Cp>API v1 не требует авторизации ключей API или белых списков IP-адресов.\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Параметр\u003C\u002Fth>\n\u003Cth>Описание\u003C\u002Fth>\n\u003Cth>Пример\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>instrumentFromCurrencyTitle\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>Название валюты, подлежащей обмену\u003C\u002Ftd>\n\u003Ctd>БТД\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>instrumentFromNetworkTitle\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>Сетевая валюта для обмена\u003C\u002Ftd>\n\u003Ctd>БТД\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>instrumentToCurrencyНазвание\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>Название валюты, которую необходимо получить\u003C\u002Ftd>\n\u003Ctd>USDT\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>instrumentToNetworkTitle\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>Сеть валюты, необходимо получить ее\u003C\u002Ftd>\n\u003Ctd>ТРК20\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>rateMode\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>Режим обмена курса ПЛАВАЮЩИЙ или ФИКСИРОВАННЫЙ.\u003C\u002Ftd>\n\u003Ctd>ПЛАВАЮЩИЙ\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>заявленныйДепозитСумма\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>Сумма депозита, заявленная звездному клиенту\u003C\u002Ftd>\n\u003Ctd>1\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>разметка\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>Параметр разметки\u003C\u002Ftd>\n\u003Ctd>0.3\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cpre>\u003Ccode>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode>GET \u002Fapi\u002Fv1\u002Frates\u002Fpublic\u002Fone?instrumentFromCurrencyTitle=BTC&amp;instrumentFromNetworkTitle=\r\n\u003C\u002Fcode>\u003Ccode>BTC&amp;instrumentToCurrencyTitle=\u003C\u002Fcode>\u003Ccode>USDT&amp;instrumentToNetworkTitle=TRC20&amp;rateMode=FLOATING&amp;claimedDepositAmount=\r\n\u003C\u002Fcode>\u003Ccode>1&amp;markup=0.3\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode>{\r\n\t\"instrumentFrom\": {\r\n\t\t\"currencyTitle\": \"BTC\",\r\n\t\t\"networkTitle\": \"BTC\",\r\n\t\t\"precisionDecimals\": 11\r\n\t},\r\n\t\"instrumentTo\": {\r\n\t\t\"currencyTitle\": \"USDT\",\r\n\t\t\"networkTitle\": \"TRC20\",\r\n\t\t\"precisionDecimals\": 1\r\n\t},\r\n\t\"depositRules\": {\r\n\t\t\"minAmount\": \"0.0010202831699481001984\",\r\n\t\t\"maxAmount\": \"0\"\r\n\t},\r\n\t\"withdrawalRules\": {\r\n\t\t\"minAmount\": \"51.324600057525118367\",\r\n\t\t\"maxAmount\": \"0\",\r\n\t\t\"withdrawalFeeRules\": {\r\n\t\t\t\"maxAmount\": \"1\",\r\n\t\t\t\"minAmount\": \"1\"\r\n\t\t}\r\n\t},\r\n\t\"minConfirmationsToWithdraw\": 2,\r\n\t\"minConfirmationsToTrade\": 2,\r\n\t\"updatedAt\": \"2024-08-05T13:31:44.315Z\",\r\n\t\"liquidityProviderPublicCode\": \"radio\",\r\n\t\"amountToGet\": \"50201.90689595\",\r\n\t\"amountToGive\": \"1\",\r\n\t\"marketMinAmount\": \"0.1\",\r\n\t\"enableFixedRate\": true,\r\n\t\"amountToGiveCurrencyTitle\": \"BTC\",\r\n\t\"rateMode\": \"FLOATING\",\r\n\t\"finalNetworkFeeAmount\": \"0\",\r\n\t\"platformFee_Absolute\": null,\r\n\t\"liquidityProviderQuotes\": {\r\n\t\t\"sellQuote\": {\r\n\t\t\t\"baseValue\": \"1\",\r\n\t\t\t\"quoteValue\": \"50304.27\"\r\n\t\t},\r\n\t\t\"buyQuote\": {\r\n\t\t\t\"baseValue\": \"50294.99\",\r\n\t\t\t\"quoteValue\": \"1\"\r\n\t\t}\r\n\t},\r\n\t\"price\": \"50201.90689595\",\r\n\t\"marketLeftPrice\": \"50304.27\",\r\n\t\"marketRightPrice\": \"0.000019882696069727819809\",\r\n\t\"marketAmountToGet\": \"50243.798064469251204\",\r\n\t\"marketAmountToGetUSDT\": \"50243.798064469251204\",\r\n\t\"quotesWithoutNetworkFee\": {\r\n\t\t\"sellQuote\": {\r\n\t\t\t\"baseValue\": \"1\",\r\n\t\t\t\"quoteValue\": \"50202.90689595\"\r\n\t\t},\r\n\t\t\"buyQuote\": {\r\n\t\t\t\"baseValue\": \"50294.99\",\r\n\t\t\t\"quoteValue\": \"0.997985\"\r\n\t\t}\r\n\t},\r\n\t\"quotes\": {\r\n\t\t\"sellQuote\": {\r\n\t\t\t\"baseValue\": \"1\",\r\n\t\t\t\"quoteValue\": \"50201.90689595\"\r\n\t\t},\r\n\t\t\"buyQuote\": {\r\n\t\t\t\"baseValue\": \"50294.99\",\r\n\t\t\t\"quoteValue\": \"0.99796512097183797717\"\r\n\t\t}\r\n\t},\r\n\t\"markup\": \"0.3\"\r\n}\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Параметр наценки в потоке заказов\u003C\u002Fh2>\n\u003Ch3>Алгоритм\u003C\u002Fh3>\n\u003Cp>Параметр наценки также должен быть передан при оформлении заказа, чтобы обеспечить правильную комиссию за заказ. При передаче параметра наценки Swapgate применяет следующую формулу для алгоритма расчета комиссии за заказ:\u003C\u002Fp>\n\u003Cblockquote>\u003Cp>                                                                                                                                    Вывод = \u003Csub>Обмен * \u003C\u002Fsub>\u003Csub>(\u003C\u002Fsub> 1 – ( \u003Csub>Платформа C(%)\u003C\u002Fsub> + \u003Csub>Наценка\u003C\u002Fsub> K ) \u002F 100)\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Ctable>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Отзыв​\u003C\u002Ftd>\n\u003Ctd>Сумма валюты, отправленная клиенту в качестве результата обмена\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Обмен\u003Csub>​\u003C\u002Fsub>\u003C\u002Ftd>\n\u003Ctd>Количество валюты, которая была доступна Swapgate после выполнения нашей торговой стратегии.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Платформа C \u003Csub>(% \u003C\u002Fsub>)\u003C\u002Ftd>\n\u003Ctd>Процент сессии, текущий Swapgate\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>К- разметка\u003C\u002Ftd>\n\u003Ctd>значение параметра \u003Cstrong>разметки\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>Исходя из приведенной формулы, значение наценки 0,3, указанное при оформлении заказа, увеличивает процент комиссии Swapgate на 0,3.\u003Cbr \u002F>\nВ следующей комиссии Swapgate установлен на 1 процент:\u003C\u002Fp>\n\u003Cblockquote>\u003Cp>                                                                                                                                 Снятие = \u003Csub>Обмен * (1 – (1 \u003C\u002Fsub>\u003Csub>+\u003C\u002Fsub> 0,3) \u002F 100)\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Cp>использование предыдущего примера, обмен 1 BTC на USDT на основе рыночной цены 50243,798064469251204 BTC:USDT приводит к следующему итоговому результату средств клиента:\u003C\u002Fp>\n\u003Cblockquote>\u003Cp>50243.798064469251204 * (1 – (1 + 0.3) \u002F 100) = 49590.62868963115\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Cp>Исходя из представленной формулы, значение наценки 0,3, указанное при создании заказа, увеличит процент комиссии Swapgate на 0,3.\u003Cbr \u002F>\nПосле того как обмен с параметром наценки перейдет в состояние COMPLETED, параметр наценки будет использован в формуле расчета партнерской маржи:\u003C\u002Fp>\n\u003Cblockquote>\u003Cp>                                                                                                                              C \u003Csub>affiliate\u003C\u002Fsub> = C \u003Csub>platform\u003C\u002Fsub> * (C \u003Csub>affiliate(%)\u003C\u002Fsub> \u002F 100) + C \u003Csub>platform\u003C\u002Fsub> * (K \u003Csub>markup\u003C\u002Fsub> \u002F 100)\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Ctable>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>C \u003Csub>affiliate\u003C\u002Fsub>​\u003C\u002Ftd>\n\u003Ctd>Количество валюты, отправленной на кошелек партнера за обмен (партнерская маржа)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>C \u003Csub>platform\u003C\u002Fsub>\u003C\u002Ftd>\n\u003Ctd>Сумма валюты, которую Swapgate получил от обмена (маржа платформы)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>C \u003Csub>affiliate(%)\u003C\u002Fsub>​\u003C\u002Ftd>\n\u003Ctd>Процент комиссионных, определенный для аффилированного лица\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>K \u003Csub>markup \u003C\u002Fsub>​\u003C\u002Ftd>\n\u003Ctd>\u003Cstrong>markup\u003C\u002Fstrong> значение параметра\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch2>\u003Cstrong>Передача параметра markup\u003C\u002Fstrong>\u003C\u002Fh2>\n\u003Cp>При создании заказа Swapgate API принимает параметр разметки наряду с другими параметрами создания заказа:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\r\n{\r\n\t\"rateMode\": \"FLOATING\",\r\n\t\"instrumentFrom\": {\r\n\t\t\"currencyTitle\": \"USDT\",\r\n\t\t\"networkTitle\": \"TRC20\"\r\n\t},\r\n\t\"instrumentTo\": {\r\n\t\t\"currencyTitle\": \"BTC\",\r\n\t\t\"networkTitle\": \"BTC\"\r\n\t},\r\n\t\"destinationAddress\": \"bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh\",\r\n\t\"destinationAddressMemo\": null,\r\n\t\"refundAddress\": null,\r\n\t\"refundAddressMemo\": null,\r\n\t\"claimedNetworkFee\": null,\r\n\t\"legacyOrderId\": null,\r\n\t\"referrerId\": \"aff_616\",\r\n\t\"claimedDepositAmount\": \"125000\",\r\n\t\"utmData\": [],\r\n\t\"browserFingerprint\": \"6b3add86bec11616427d069556a33548\"\r\n\t\"markup\": \"0.2\" \u002F\u002F &lt;-- here\r\n}\r\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Значение множителя разметки передается вместе с другими параметрами.\u003C\u002Fp>\n\u003Ch2>Использование API v2\u003C\u002Fh2>\n\u003Cp>Использование конечных точек API v2 требует дополнительной настройки авторизации. Без необходимых параметров авторизации конечные точки v2 будут выбрасывать ошибку 403 Forbidden.\u003Cbr \u002F>\nИнтеграция состоит из двух шагов – создания API-ключа и интеграции его использования в API-запросы. Создав ключ API, наши b2b-клиенты получат пару ключей для подписи своих запросов, а также список белых IP-адресов, которые могут получить доступ к конечным точкам API.\u003C\u002Fp>\n\u003Cblockquote>\u003Cp>Примечание: для выполнения запросов \u002Fapi\u002Fv1\u002Fusers\u002F* у вас должен быть активный cookie авторизации.\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Ch3>Создание ключа API\u003C\u002Fh3>\n\u003Cp>При создании ключа API необходимо передать массив белых списков IP-адресов:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\r\nPOST \u002Fapi\u002Fv1\u002Fusers\u002Fgenerate-api-key\r\n\r\nRequest:\r\n{\r\n\t\"name\": \"test\",\r\n\t\"whiteListIp\": [\"127.0.0.1\"],\r\n\t\"isActive\": true\r\n}\r\n\r\nResponse:\r\n{\r\n\t\"apiId\": 40,\r\n\t\"name\": \"test\",\r\n\t\"isActive\": true,\r\n\t\"publicKey\": \"ZgzycV6Sf78BZKuyIAiz+0Bor002+0\u002Frx1gLKsmYCsY=\",\r\n\t\"secretKey\": \"a482a8e3a3ff9aeadefb11d3d8c11253e7e8412e05ef2b8599016cc87a64b7d6\",\r\n\t\"whiteListIp\": [\r\n\t\t\"127.0.0.1\"\r\n\t],\r\n\t\"createdAt\": \"2024-08-05T13:54:18.427Z\"\r\n}\r\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>В ответе будет содержаться пара ключей, которую необходимо использовать при авторизации API v2.\u003C\u002Fp>\n\u003Cblockquote>\u003Cp>Примечание: Поле secretKey будет отображаться только один раз, во время создания ключа API. Мы советуем сохранить его сразу после создания ключа API.\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Ch3>Список ключей API\u003C\u002Fh3>\n\u003Cp>Если ваша интеграция требует использования более одного API-ключа, вы можете легко перечислить их с помощью конечной точки list:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\r\nGET \u002Fapi\u002Fv1\u002Fusers\u002Flist-api-key\r\n\r\n[\r\n\t{\r\n\t\t\"apiId\": 40,\r\n\t\t\"name\": \"test\",\r\n\t\t\"isActive\": true,\r\n\t\t\"settings\": {},\r\n\t\t\"publicKey\": \"ZgzycV6Sf78BZKuyIAiz+0Bor002+0\u002Frx1gLKsmYCsY=\",\r\n\t\t\"whiteListIp\": [\r\n\t\t\t\"127.0.0.1\"\r\n\t\t],\r\n\t\t\"createdAt\": \"2024-08-05T13:54:18.427Z\"\r\n\t}\r\n]\r\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Управление ключами API\u003C\u002Fh3>\n\u003Cp>Управление существующими ключами API может быть осуществлено через нашу линию поддержки клиентов b2b. Это включает в себя:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>удаление ключей API\u003C\u002Fli>\n\u003Cli>Добавление новых IP-адресов из белого списка к существующему ключу API\u003C\u002Fli>\n\u003Cli>Обновление и добавление настроек для ключа API (например: минимальные\u002Fмаксимальные значения для разметки)\u003C\u002Fli>\n\u003Cli>Деактивация ключей API\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Использование ключа API\u003C\u002Fh3>\n\u003Cp>API v2 требует установки 3 заголовков при каждом запросе:\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Заголовок\u003C\u002Fth>\n\u003Cth>Значение\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>x-api-public-key\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>Ваш открытый ключ, полученный при создании ключа API\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>x-api-timestamp\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>Временная метка UNIX\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>x-api-signature\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>Подпись под запросом\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>Значение меняется с помощью hmac sha256. Поскольку контроль данных использует строковую конкатенацию временной метки, строковое представление запроса тела и открытый ключ, закрытый ключ используется в качестве ключа к функции hmac:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\r\nfunction signRequest(requestBody) {\r\n  const timestamp = new Date().getTime();\r\n  const publicKey = \"ZgzycV6Sf78BZKuyIAiz+0Bor002+0\u002Frx1gLKsmYCsY=\";\r\n\tconst privateKey = \"a482a8e3a3ff9aeadefb11d3d8c11253e7e8412e05ef2b8599016cc87a64b7d6\";\r\n\t\r\n\tconst encoder = new TextEncoder();\r\n\tconst data = encoder.encode(\r\n\t\ttimestamp + JSON.stringify(requestBody) + publicKey,\r\n\t);\r\n\t\r\n\tconst hmac = createHmac('sha256', privateKey);\r\n\tconst dataSign = hmac.update(data);\r\n\tconst signature = dataSign.digest('base64');\r\n\t\r\n\treturn signature;\r\n}\r\n\r\nsignRequest({ myKey: \"myValue\" })\r\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Пример кода инициативы\u003C\u002Fh2>\n\u003Cpre>\u003Ccode>\r\nconst { createHmac } = require('crypto');\r\n\r\nconst API_PREFIX = 'https:\u002F\u002Fswapgate.io\u002Fapi\u002F';\r\nconst PUBKEY = 'public_key'; \u002F\u002F changeme\r\nconst PRIVKEY = 'private_key'; \u002F\u002F changeme\r\n\r\nfunction signRequest(requestBody, timestamp) {\r\n  const encoder = new TextEncoder();\r\n  const data = encoder.encode(timestamp + JSON.stringify(requestBody) + PUBKEY);\r\n\r\n  const hmac = createHmac('sha256', PRIVKEY);\r\n  const dataSign = hmac.update(data);\r\n  const signature = dataSign.digest('base64');\r\n\r\n  return signature;\r\n}\r\n\r\nasync function createOrder() {\r\n  const clientBrowserFingerprint = '6b3add86bec11616427d069556a33548';\r\n  const orderRateMode = 'FLOATING';\r\n  const depositAmount = '1';\r\n  const clientDestinationAddress = 'TUhw6S1HyXDhycKvTec3x7HNGQfNn3Vhpc';\r\n  const clientDestinationAddressMemo = null;\r\n  const markup = '0.3';\r\n  const instrumentFromCurrencyTitle = 'BTC';\r\n  const instrumentFromNetworkTitle = 'BTC';\r\n\r\n  const instrumentToCurrencyTitle = 'USDT';\r\n  const instrumentToNetworkTitle = 'TRC20';\r\n\r\n  \u002F\u002F Step 1. Prepate createOrder request body using obtained rate data\r\n\r\n  const createOrderRequestBody = {\r\n    rateMode: orderRateMode,\r\n    instrumentFrom: {\r\n      currencyTitle: instrumentFromCurrencyTitle,\r\n      networkTitle: instrumentFromNetworkTitle,\r\n    },\r\n    instrumentTo: {\r\n      currencyTitle: instrumentToCurrencyTitle,\r\n      networkTitle: instrumentToNetworkTitle,\r\n    },\r\n    destinationAddress: clientDestinationAddress,\r\n    destinationAddressMemo: clientDestinationAddressMemo,\r\n    refundAddress: null,\r\n    refundAddressMemo: null,\r\n    markup: markup,\r\n    claimedNetworkFee: null,\r\n    legacyOrderId: null,\r\n    referrerId: null,\r\n    claimedDepositAmount: depositAmount,\r\n    utmData: [],\r\n    browserFingerprint: clientBrowserFingerprint,\r\n  };\r\n\r\n  \u002F\u002F Step 2. Prepare signature based on key pair and createOrder request data\r\n\r\n  const timestamp = new Date().getTime();\r\n  const signature = signRequest(createOrderRequestBody, timestamp);\r\n\r\n  \u002F\u002F Step 3. Call API v2 create-order endpoint\r\n\r\n  const order = JSON.parse(\r\n    await (\r\n      await fetch(`${API_PREFIX}v2\u002Forders\u002Fpublic\u002Fcreate`, {\r\n        method: 'POST',\r\n        headers: {\r\n          'x-api-public-key': PUBKEY,\r\n          'x-api-timestamp': timestamp,\r\n          'x-api-signature': signature,\r\n          'content-type': 'application\u002Fjson; charset=utf-8',\r\n        },\r\n        body: JSON.stringify(createOrderRequestBody),\r\n      })\r\n    ).text(),\r\n  );\r\n\r\n  console.log('order', order);\r\n}\r\n\r\nvoid createOrder();\u003C\u002Fcode>\u003C\u002Fpre>\n",{"code":6},[19],{"language":20,"slug":13,"status":15},{"code":5,"locale":21,"name":22,"slug":23},"en_US","English","en",{"canonical":25,"metaDesc":26,"readingTime":27,"opengraphTitle":28,"opengraphUrl":25,"opengraphImage":29,"twitterImage":29,"opengraphDescription":26,"twitterDescription":30,"title":28,"twitterTitle":30,"opengraphType":31,"opengraphPublishedTime":30,"opengraphModifiedTime":32},"https:\u002F\u002Fswapgate.io\u002Fru\u002Fdocs\u002Fapiv2\u002F","Современное API с улучшенным функционалом. Подробная информация, примеры запросов и рекомендации по интеграции.",3,"API v2: описание и примеры",null,"","article","2025-04-14T12:19:35+00:00",{"afterDescription":29,"apiEndpoints":29},{"notation":29}]