├── .dockerignore ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── feature_request.yml │ ├── support_question.yml │ └── bug_report.yml ├── dependabot.yml └── workflows │ └── deploy.yml ├── source ├── javascripts │ ├── all.js │ ├── app │ │ ├── _copy.js │ │ ├── _search.js │ │ ├── _toc.js │ │ └── _lang.js │ ├── all_nosearch.js │ └── lib │ │ ├── _jquery.highlight.js │ │ ├── _imagesloaded.min.js │ │ └── _energize.js ├── fonts │ ├── slate.eot │ ├── slate.ttf │ ├── slate.woff │ ├── slate.woff2 │ ├── Vazir │ │ ├── Vazir-Black-FD.eot │ │ ├── Vazir-Black-FD.ttf │ │ ├── Vazir-Black-FD.woff │ │ ├── Vazir-Bold-FD.eot │ │ ├── Vazir-Bold-FD.ttf │ │ ├── Vazir-Bold-FD.woff │ │ ├── Vazir-Bold-FD.woff2 │ │ ├── Vazir-Light-FD.eot │ │ ├── Vazir-Light-FD.ttf │ │ ├── Vazir-Light-FD.woff │ │ ├── Vazir-Medium-FD.eot │ │ ├── Vazir-Medium-FD.ttf │ │ ├── Vazir-Thin-FD.eot │ │ ├── Vazir-Thin-FD.ttf │ │ ├── Vazir-Thin-FD.woff │ │ ├── Vazir-Thin-FD.woff2 │ │ ├── Vazir-Black-FD.woff2 │ │ ├── Vazir-Light-FD.woff2 │ │ ├── Vazir-Medium-FD.woff │ │ ├── Vazir-Medium-FD.woff2 │ │ ├── Vazir-Regular-FD.eot │ │ ├── Vazir-Regular-FD.ttf │ │ ├── Vazir-Regular-FD.woff │ │ └── Vazir-Regular-FD.woff2 │ ├── IRANSansFaNum │ │ ├── eot │ │ │ ├── IRANSansWeb(FaNum).eot │ │ │ ├── IRANSansWeb(FaNum)_Bold.eot │ │ │ ├── IRANSansWeb(FaNum)_Black.eot │ │ │ ├── IRANSansWeb(FaNum)_Light.eot │ │ │ ├── IRANSansWeb(FaNum)_Medium.eot │ │ │ └── IRANSansWeb(FaNum)_UltraLight.eot │ │ ├── ttf │ │ │ ├── IRANSansWeb(FaNum).ttf │ │ │ ├── IRANSansWeb(FaNum)_Bold.ttf │ │ │ ├── IRANSansWeb(FaNum)_Black.ttf │ │ │ ├── IRANSansWeb(FaNum)_Light.ttf │ │ │ ├── IRANSansWeb(FaNum)_Medium.ttf │ │ │ └── IRANSansWeb(FaNum)_UltraLight.ttf │ │ ├── woff │ │ │ ├── IRANSansWeb(FaNum).woff │ │ │ ├── IRANSansWeb(FaNum)_Bold.woff │ │ │ ├── IRANSansWeb(FaNum)_Black.woff │ │ │ ├── IRANSansWeb(FaNum)_Light.woff │ │ │ ├── IRANSansWeb(FaNum)_Medium.woff │ │ │ └── IRANSansWeb(FaNum)_UltraLight.woff │ │ └── woff2 │ │ │ ├── IRANSansWeb(FaNum).woff2 │ │ │ ├── IRANSansWeb(FaNum)_Black.woff2 │ │ │ ├── IRANSansWeb(FaNum)_Bold.woff2 │ │ │ ├── IRANSansWeb(FaNum)_Light.woff2 │ │ │ ├── IRANSansWeb(FaNum)_Medium.woff2 │ │ │ └── IRANSansWeb(FaNum)_UltraLight.woff2 │ └── slate.svg ├── images │ ├── logo.png │ ├── favicon.ico │ ├── navbar.png │ ├── active-gateway.jpg │ ├── active-plugin.jpg │ ├── converter-admin.jpg │ ├── gateway-setting.jpg │ ├── plugin-upload.jpg │ ├── active-convertor.jpg │ └── nobitex-dashboard.jpg ├── stylesheets │ ├── custom.css.scss │ ├── _icon-font.scss │ ├── print.css.scss │ ├── _rtl.scss │ └── _variables.scss ├── index.html.md ├── deprecated │ └── index.html.md ├── includes │ ├── internal │ │ ├── _active_order_count.md │ │ ├── _transactions.md │ │ ├── _notifications.md │ │ └── _2fa.md │ ├── _faq.md │ ├── _symbols.md │ ├── _security.md │ ├── _referral.md │ ├── _auth.md │ ├── _portfolio.md │ ├── _other.md │ ├── _general_notes.md │ └── _address_book.md ├── internal.html.md ├── terms │ └── index.html.md ├── changelog │ └── index.html.md ├── layouts │ └── layout.erb └── postman │ ├── Nobitex Gateway.postman_collection.json │ └── Nobitex Gateway Testnet.postman_collection.json ├── Makefile ├── Gemfile ├── .gitignore ├── .editorconfig ├── lib ├── multilang.rb ├── nesting_unique_head.rb ├── toc_data.rb ├── unique_head.rb └── monokai_sublime_slate.rb ├── CONTRIBUTING.md ├── Dockerfile ├── README.md ├── Vagrantfile ├── config.rb ├── Gemfile.lock ├── font-selection.json ├── deploy.sh └── slate.sh /.dockerignore: -------------------------------------------------------------------------------- 1 | build/ 2 | .github/ 3 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | source/javascripts/lib/* linguist-vendored 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | -------------------------------------------------------------------------------- /source/javascripts/all.js: -------------------------------------------------------------------------------- 1 | //= require ./all_nosearch 2 | //= require ./app/_search 3 | -------------------------------------------------------------------------------- /source/fonts/slate.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/slate.eot -------------------------------------------------------------------------------- /source/fonts/slate.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/slate.ttf -------------------------------------------------------------------------------- /source/fonts/slate.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/slate.woff -------------------------------------------------------------------------------- /source/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/images/logo.png -------------------------------------------------------------------------------- /source/fonts/slate.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/slate.woff2 -------------------------------------------------------------------------------- /source/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/images/favicon.ico -------------------------------------------------------------------------------- /source/images/navbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/images/navbar.png -------------------------------------------------------------------------------- /source/images/active-gateway.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/images/active-gateway.jpg -------------------------------------------------------------------------------- /source/images/active-plugin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/images/active-plugin.jpg -------------------------------------------------------------------------------- /source/images/converter-admin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/images/converter-admin.jpg -------------------------------------------------------------------------------- /source/images/gateway-setting.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/images/gateway-setting.jpg -------------------------------------------------------------------------------- /source/images/plugin-upload.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/images/plugin-upload.jpg -------------------------------------------------------------------------------- /source/images/active-convertor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/images/active-convertor.jpg -------------------------------------------------------------------------------- /source/images/nobitex-dashboard.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/images/nobitex-dashboard.jpg -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Black-FD.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Black-FD.eot -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Black-FD.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Black-FD.ttf -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Black-FD.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Black-FD.woff -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Bold-FD.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Bold-FD.eot -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Bold-FD.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Bold-FD.ttf -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Bold-FD.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Bold-FD.woff -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Bold-FD.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Bold-FD.woff2 -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Light-FD.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Light-FD.eot -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Light-FD.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Light-FD.ttf -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Light-FD.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Light-FD.woff -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Medium-FD.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Medium-FD.eot -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Medium-FD.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Medium-FD.ttf -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Thin-FD.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Thin-FD.eot -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Thin-FD.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Thin-FD.ttf -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Thin-FD.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Thin-FD.woff -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Thin-FD.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Thin-FD.woff2 -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Black-FD.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Black-FD.woff2 -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Light-FD.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Light-FD.woff2 -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Medium-FD.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Medium-FD.woff -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Medium-FD.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Medium-FD.woff2 -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Regular-FD.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Regular-FD.eot -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Regular-FD.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Regular-FD.ttf -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Regular-FD.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Regular-FD.woff -------------------------------------------------------------------------------- /source/fonts/Vazir/Vazir-Regular-FD.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/Vazir/Vazir-Regular-FD.woff2 -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/eot/IRANSansWeb(FaNum).eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/eot/IRANSansWeb(FaNum).eot -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/ttf/IRANSansWeb(FaNum).ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/ttf/IRANSansWeb(FaNum).ttf -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/woff/IRANSansWeb(FaNum).woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/woff/IRANSansWeb(FaNum).woff -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/eot/IRANSansWeb(FaNum)_Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/eot/IRANSansWeb(FaNum)_Bold.eot -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/ttf/IRANSansWeb(FaNum)_Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/ttf/IRANSansWeb(FaNum)_Bold.ttf -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/woff2/IRANSansWeb(FaNum).woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/woff2/IRANSansWeb(FaNum).woff2 -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/eot/IRANSansWeb(FaNum)_Black.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/eot/IRANSansWeb(FaNum)_Black.eot -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/eot/IRANSansWeb(FaNum)_Light.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/eot/IRANSansWeb(FaNum)_Light.eot -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/eot/IRANSansWeb(FaNum)_Medium.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/eot/IRANSansWeb(FaNum)_Medium.eot -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/ttf/IRANSansWeb(FaNum)_Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/ttf/IRANSansWeb(FaNum)_Black.ttf -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/ttf/IRANSansWeb(FaNum)_Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/ttf/IRANSansWeb(FaNum)_Light.ttf -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/ttf/IRANSansWeb(FaNum)_Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/ttf/IRANSansWeb(FaNum)_Medium.ttf -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/woff/IRANSansWeb(FaNum)_Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/woff/IRANSansWeb(FaNum)_Bold.woff -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/woff/IRANSansWeb(FaNum)_Black.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/woff/IRANSansWeb(FaNum)_Black.woff -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/woff/IRANSansWeb(FaNum)_Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/woff/IRANSansWeb(FaNum)_Light.woff -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/woff/IRANSansWeb(FaNum)_Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/woff/IRANSansWeb(FaNum)_Medium.woff -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/woff2/IRANSansWeb(FaNum)_Black.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/woff2/IRANSansWeb(FaNum)_Black.woff2 -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/woff2/IRANSansWeb(FaNum)_Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/woff2/IRANSansWeb(FaNum)_Bold.woff2 -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/woff2/IRANSansWeb(FaNum)_Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/woff2/IRANSansWeb(FaNum)_Light.woff2 -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/eot/IRANSansWeb(FaNum)_UltraLight.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/eot/IRANSansWeb(FaNum)_UltraLight.eot -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/ttf/IRANSansWeb(FaNum)_UltraLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/ttf/IRANSansWeb(FaNum)_UltraLight.ttf -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/woff2/IRANSansWeb(FaNum)_Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/woff2/IRANSansWeb(FaNum)_Medium.woff2 -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/woff/IRANSansWeb(FaNum)_UltraLight.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/woff/IRANSansWeb(FaNum)_UltraLight.woff -------------------------------------------------------------------------------- /source/fonts/IRANSansFaNum/woff2/IRANSansWeb(FaNum)_UltraLight.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nobitex/docs-api/HEAD/source/fonts/IRANSansFaNum/woff2/IRANSansWeb(FaNum)_UltraLight.woff2 -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: clean build serve 2 | 3 | all: build 4 | 5 | build: 6 | bundle exec middleman build 7 | 8 | serve: 9 | bundle exec middleman server 10 | 11 | clean: 12 | rm -rf build 13 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: bundler 4 | directory: "/" 5 | schedule: 6 | interval: daily 7 | open-pull-requests-limit: 10 8 | target-branch: dev 9 | versioning-strategy: increase-if-necessary 10 | -------------------------------------------------------------------------------- /source/stylesheets/custom.css.scss: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | @import 'variables'; 3 | 4 | .badge { 5 | font-size: 80%; 6 | background-color: rgba(0,0,0,0.05); 7 | padding: 0 3px; 8 | border-radius: 4px; 9 | } 10 | 11 | table td .long { 12 | display: inline-block; 13 | max-width: calc(25vw - 115px); 14 | word-wrap: break-word; 15 | } 16 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | ruby '>= 2.5' 2 | source 'https://rubygems.org' 3 | 4 | 5 | gem "rack", ">= 2.2.13", "< 3.0" 6 | # Middleman 7 | gem 'middleman', '~> 4.4' 8 | gem 'middleman-syntax', '~> 3.2' 9 | gem 'middleman-autoprefixer', '~> 3.0' 10 | gem 'middleman-sprockets', '~> 4.1' 11 | gem 'rouge', '~> 3.21' 12 | gem 'redcarpet', '~> 3.5.0' 13 | gem "nokogiri", ">= 1.18.8" 14 | gem 'sass' 15 | gem 'webrick' 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.gem 2 | *.rbc 3 | .bundle 4 | .config 5 | coverage 6 | InstalledFiles 7 | vendor/bundle 8 | lib/bundler/man 9 | pkg 10 | rdoc 11 | spec/reports 12 | test/tmp 13 | test/version_tmp 14 | tmp 15 | *.DS_STORE 16 | build/ 17 | .cache 18 | .vagrant 19 | .sass-cache 20 | 21 | # YARD artifacts 22 | .yardoc 23 | _yardoc 24 | doc/ 25 | .idea/ 26 | .vscode 27 | 28 | # Vagrant artifacts 29 | ubuntu-*-console.log 30 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: https://EditorConfig.org 2 | 3 | # Top-most EditorConfig file 4 | root = true 5 | 6 | # Unix-style newlines with a newline ending every file 7 | [*] 8 | end_of_line = lf 9 | insert_final_newline = true 10 | indent_style = space 11 | indent_size = 2 12 | trim_trailing_whitespace = true 13 | 14 | [*.rb] 15 | charset = utf-8 16 | 17 | [*.md] 18 | trim_trailing_whitespace = false 19 | -------------------------------------------------------------------------------- /lib/multilang.rb: -------------------------------------------------------------------------------- 1 | module Multilang 2 | def block_code(code, full_lang_name) 3 | if full_lang_name 4 | parts = full_lang_name.split('--') 5 | rouge_lang_name = (parts) ? parts[0] : "" # just parts[0] here causes null ref exception when no language specified 6 | super(code, rouge_lang_name).sub("highlight #{rouge_lang_name}") do |match| 7 | match + " tab-" + full_lang_name 8 | end 9 | else 10 | super(code, full_lang_name) 11 | end 12 | end 13 | end 14 | 15 | require 'middleman-core/renderers/redcarpet' 16 | Middleman::Renderers::MiddlemanRedcarpetHTML.send :include, Multilang 17 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | ## Development 4 | To install dependencies, after installing `ruby`, install bundle with `gem install bundler` and then 5 | use `bundle install` to install dependencies. 6 | 7 | Now you can start editing files in `source` directory. Launch a server with `make serve` to view the 8 | resulting HTML in your browser. 9 | 10 | To build the site run `make build`. This will generate site's static files in `build` folder. 11 | 12 | # References 13 | * https://github.com/lord/slate/wiki/ 14 | * https://developer.tradegecko.com/docs.html 15 | * https://github.com/rouge-ruby/rouge/wiki/List-of-supported-languages-and-lexers 16 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ruby:2.6-slim 2 | 3 | WORKDIR /srv/slate 4 | 5 | VOLUME /srv/slate/build 6 | VOLUME /srv/slate/source 7 | 8 | EXPOSE 4567 9 | 10 | COPY Gemfile . 11 | COPY Gemfile.lock . 12 | 13 | RUN apt-get update \ 14 | && apt-get install -y --no-install-recommends \ 15 | build-essential \ 16 | git \ 17 | nodejs \ 18 | && gem install bundler \ 19 | && bundle install \ 20 | && apt-get remove -y build-essential git \ 21 | && apt-get autoremove -y \ 22 | && rm -rf /var/lib/apt/lists/* 23 | 24 | COPY . /srv/slate 25 | 26 | RUN chmod +x /srv/slate/slate.sh 27 | 28 | ENTRYPOINT ["/srv/slate/slate.sh"] 29 | CMD ["build"] 30 | -------------------------------------------------------------------------------- /source/javascripts/app/_copy.js: -------------------------------------------------------------------------------- 1 | function copyToClipboard(container) { 2 | const el = document.createElement('textarea'); 3 | el.value = container.textContent.replace(/\n$/, ''); 4 | document.body.appendChild(el); 5 | el.select(); 6 | document.execCommand('copy'); 7 | document.body.removeChild(el); 8 | } 9 | 10 | function setupCodeCopy() { 11 | $('pre.highlight').prepend('
Copy to Clipboard
'); 12 | $('.copy-clipboard').on('click', function() { 13 | copyToClipboard(this.parentNode.children[1]); 14 | }); 15 | } 16 | -------------------------------------------------------------------------------- /lib/nesting_unique_head.rb: -------------------------------------------------------------------------------- 1 | # Nested unique header generation 2 | require 'middleman-core/renderers/redcarpet' 3 | 4 | class NestingUniqueHeadCounter < Middleman::Renderers::MiddlemanRedcarpetHTML 5 | def initialize 6 | super 7 | @@headers_history = {} if !defined?(@@headers_history) 8 | end 9 | 10 | def header(text, header_level) 11 | friendly_text = text.gsub(/<[^>]*>/,"").parameterize 12 | @@headers_history[header_level] = text.parameterize 13 | 14 | if header_level > 1 15 | for i in (header_level - 1).downto(1) 16 | friendly_text.prepend("#{@@headers_history[i]}-") if @@headers_history.key?(i) 17 | end 18 | end 19 | 20 | return "#{text}" 21 | end 22 | end 23 | -------------------------------------------------------------------------------- /source/index.html.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: مستندات API نوبیتکس 3 | lang: fa 4 | language_tabs: 5 | - shell 6 | - plaintext 7 | includes: 8 | - intro 9 | - market_data 10 | - user_data 11 | - market_trade 12 | - position 13 | - withdraw 14 | - websocket 15 | - address_book 16 | - security 17 | - referral 18 | - auth 19 | - portfolio 20 | - other 21 | - general_notes 22 | - faq 23 | - symbols 24 | toc_footers: 25 | - سابقه تغییرات API 26 | - شرایط استفاده از API 27 | - مخزن گیت‌هاب 28 | - کالکشن Postman 29 | - سایت نوبیتکس 30 | --- 31 | -------------------------------------------------------------------------------- /source/javascripts/all_nosearch.js: -------------------------------------------------------------------------------- 1 | //= require ./lib/_energize 2 | //= require ./app/_copy 3 | //= require ./app/_toc 4 | //= require ./app/_lang 5 | 6 | function adjustLanguageSelectorWidth() { 7 | const elem = $('.dark-box > .lang-selector'); 8 | elem.width(elem.parent().width()); 9 | } 10 | 11 | $(function() { 12 | loadToc($('#toc'), '.toc-link', '.toc-list-h2', 10); 13 | setupLanguages($('body').data('languages')); 14 | $('.content').imagesLoaded( function() { 15 | window.recacheHeights(); 16 | window.refreshToc(); 17 | }); 18 | 19 | $(window).resize(function() { 20 | adjustLanguageSelectorWidth(); 21 | }); 22 | adjustLanguageSelectorWidth(); 23 | }); 24 | 25 | window.onpopstate = function() { 26 | activateLanguage(getLanguageFromQueryString()); 27 | }; 28 | -------------------------------------------------------------------------------- /lib/toc_data.rb: -------------------------------------------------------------------------------- 1 | require 'nokogiri' 2 | 3 | def toc_data(page_content) 4 | html_doc = Nokogiri::HTML::DocumentFragment.parse(page_content) 5 | 6 | # get a flat list of headers 7 | headers = [] 8 | html_doc.css('h1, h2, h3').each do |header| 9 | headers.push({ 10 | id: header.attribute('id').to_s, 11 | content: header.children, 12 | title: header.children.to_s.gsub(/<[^>]*>/, ''), 13 | level: header.name[1].to_i, 14 | children: [] 15 | }) 16 | end 17 | 18 | [3,2].each do |header_level| 19 | header_to_nest = nil 20 | headers = headers.reject do |header| 21 | if header[:level] == header_level 22 | header_to_nest[:children].push header if header_to_nest 23 | true 24 | else 25 | header_to_nest = header if header[:level] < header_level 26 | false 27 | end 28 | end 29 | end 30 | headers 31 | end 32 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Nobitex API Documentation 2 | [![Visit Documentation Website](https://img.shields.io/badge/visit-Documentation_Website-blueviolet)](https://apidocs.nobitex.ir) 3 | [![Deploy](https://github.com/nobitex/docs-api/actions/workflows/deploy.yml/badge.svg)](https://github.com/nobitex/docs-api/actions/workflows/deploy.yml) 4 | 5 | This repository contains documentation for connecting to the Nobitex cryptocurrency exchange market and using the 6 | official APIs. Feel free to create new issues for reporting documentation ambiguities and suggesting 7 | improvements to documentation or the underlying API. 8 | 9 | Built API documentation is available on [https://apidocs.nobitex.ir/](https://apidocs.nobitex.ir). 10 | The documentation is generated using [Slate](https://github.com/lord/slate). 11 | If you want to contribute to the documentation itself, see [Contributing](https://github.com/nobitex/docs-api/blob/master/CONTRIBUTING.md). 12 | -------------------------------------------------------------------------------- /lib/unique_head.rb: -------------------------------------------------------------------------------- 1 | # Unique header generation 2 | require 'middleman-core/renderers/redcarpet' 3 | require 'digest' 4 | class UniqueHeadCounter < Middleman::Renderers::MiddlemanRedcarpetHTML 5 | def initialize 6 | super 7 | @head_count = {} 8 | end 9 | def header(text, header_level) 10 | friendly_text = text.gsub(/<[^>]*>/,"").parameterize 11 | if friendly_text.strip.length == 0 12 | # Looks like parameterize removed the whole thing! It removes many unicode 13 | # characters like Chinese and Russian. To get a unique URL, let's just 14 | # URI escape the whole header 15 | friendly_text = Digest::SHA1.hexdigest(text)[0,10] 16 | end 17 | @head_count[friendly_text] ||= 0 18 | @head_count[friendly_text] += 1 19 | if @head_count[friendly_text] > 1 20 | friendly_text += "-#{@head_count[friendly_text]}" 21 | end 22 | return "#{text}" 23 | end 24 | end 25 | -------------------------------------------------------------------------------- /source/stylesheets/_icon-font.scss: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'slate'; 3 | src:font-url('slate.eot?-syv14m'); 4 | src:font-url('slate.eot?#iefix-syv14m') format('embedded-opentype'), 5 | font-url('slate.woff2?-syv14m') format('woff2'), 6 | font-url('slate.woff?-syv14m') format('woff'), 7 | font-url('slate.ttf?-syv14m') format('truetype'), 8 | font-url('slate.svg?-syv14m#slate') format('svg'); 9 | font-weight: normal; 10 | font-style: normal; 11 | } 12 | 13 | %icon { 14 | font-family: 'slate'; 15 | speak: none; 16 | font-style: normal; 17 | font-weight: normal; 18 | font-variant: normal; 19 | text-transform: none; 20 | line-height: 1; 21 | } 22 | 23 | %icon-exclamation-sign { 24 | @extend %icon; 25 | content: "\e600"; 26 | } 27 | %icon-info-sign { 28 | @extend %icon; 29 | content: "\e602"; 30 | } 31 | %icon-ok-sign { 32 | @extend %icon; 33 | content: "\e606"; 34 | } 35 | %icon-search { 36 | @extend %icon; 37 | content: "\e607"; 38 | } 39 | -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy 2 | 3 | on: 4 | push: 5 | branches: [ 'master' ] 6 | 7 | jobs: 8 | deploy: 9 | runs-on: ubuntu-latest 10 | env: 11 | ruby-version: 3.3.8 12 | 13 | steps: 14 | - uses: actions/checkout@v4 15 | - name: Set up Ruby 16 | uses: ruby/setup-ruby@v1 17 | with: 18 | ruby-version: ${{ env.ruby-version }} 19 | 20 | 21 | - uses: actions/cache@v4 22 | with: 23 | path: vendor/bundle 24 | key: gems-${{ runner.os }}-${{ env.ruby-version }}-${{ hashFiles('**/Gemfile.lock') }} 25 | restore-keys: | 26 | gems-${{ runner.os }}-${{ env.ruby-version }}- 27 | gems-${{ runner.os }}- 28 | 29 | - run: bundle config set deployment 'true' 30 | - name: bundle install 31 | run: | 32 | bundle config path vendor/bundle 33 | bundle install --jobs 4 --retry 3 34 | 35 | - run: bundle exec middleman build 36 | 37 | - name: Deploy 38 | uses: peaceiris/actions-gh-pages@v3 39 | with: 40 | github_token: ${{ secrets.GITHUB_TOKEN }} 41 | publish_dir: ./build 42 | keep_files: true 43 | -------------------------------------------------------------------------------- /source/deprecated/index.html.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: موارد قدیمی API 3 | lang: fa 4 | toc_footers: 5 | - مستندات API نوبیتکس 6 | - سابقه تغییرات API 7 | - شرایط استفاده از API 8 | - سایت نوبیتکس 9 | --- 10 | 11 | # موارد قدیمی API 12 | برخی از APIها به دلیل تغییرات ساختاری یا کارکردی، قدیمی و deprecated محسوب می‌شوند و نباید دیگر از آن‌ها استفاده شود. این موارد صرفاً جهت ثبت در ادامه خواهند آمد، ولی ممکن است در حال حاضر یا هر یک از نسخه‌های آتی نوبیتکس این APIها غیرفعال شوند یا دیگر پاسخگو نباشند. 13 | 14 | ## کد دعوت پیش‌فرض 15 | 16 | ```shell 17 | curl 'https://apiv2.nobitex.ir/users/get-referral-code' \ 18 | -H "Authorization: Token yourTOKENhereHEX0000000000" 19 | ``` 20 | 21 | ```plaintext 22 | http POST https://apiv2.nobitex.ir/users/get-referral-code \ 23 | ``` 24 | 25 | > در صورت فراخوانی درست، پاسخ به این صورت خواهد بود: 26 | 27 | ```json 28 | { 29 | "status": "ok", 30 | "referredUsersCount": 0, 31 | "referralCode": "84440", 32 | "referralFeeTotalCount": 0, 33 | "referralFeeTotal": 0 34 | } 35 | ``` 36 | 37 | برای دریافت کد دعوت پیش‌فرض از این نوع درخواست استفاده نمایید: 38 | 39 | - آدرس : `GET /users/get-referral-code` 40 | -------------------------------------------------------------------------------- /source/includes/internal/_active_order_count.md: -------------------------------------------------------------------------------- 1 | # معامله در بازار 2 | 3 | ## تعداد سفارش‌های باز کاربر 4 | 5 | 6 | ```shell 7 | curl 'https://apiv2.nobitex.ir/market/orders/open-count?tradeType=margin' \ 8 | -H "Authorization: Token yourTOKENhereHEX0000000000" 9 | ``` 10 | 11 | ```plaintext 12 | http GET https://apiv2.nobitex.ir/market/orders/open-count?tradeType=margin 13 | ``` 14 | 15 | > در صورت فراخوانی درست، پاسخ به این صورت خواهد بود: 16 | 17 | ```json 18 | { 19 | "status": "ok", 20 | "count": 2 21 | } 22 | ``` 23 | 24 | برای دریافت تعداد سفارش‌های باز خود، از این درخواست استفاده نمایید. 25 | 26 | - **درخواست:** `GET /market/orders/open-count` 27 | - **محدودیت فراخوانی:** 15 درخواست در دقیقه 28 | 29 | ### پارامترهای ورودی 30 | | پارامتر | نوع | پیش‌فرض | توضیحات | نمونه | 31 | |-----------|--------|------------------|-------------------------------|--------------------| 32 | | tradeType | string | تمام انواع سفارش | نوع سفارش اسپات یا فروش تعهدی | `spot` یا `margin` | 33 | 34 | ### پارامترهای پاسخ 35 | | پارامتر | نوع | توضیحات | نمونه | 36 | |---------|---------|-------------------------|-------| 37 | | count | integer | تعداد سفارشات باز کاربر | 2 | 38 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.yml: -------------------------------------------------------------------------------- 1 | name: درخواست فیچر 2 | description: امکانات مورد نیاز خود را به ما پیشنهاد دهید 3 | title: "[پیشنهاد]: " 4 | labels: ["enhancement"] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | **توجه:** قبل از ثبت مورد جدید، [مستندات امکانات موجود](https://apidocs.nobitex.ir/) و [موردهای قدیمی فیچر](https://github.com/nobitex/docs-api/issues?q=is%3Aissue+label%3Aenhancement) را بخوانید. در صورت یافتن مورد مشابه همانجا مسئله خود را مطرح کنید 10 | - type: textarea 11 | id: requirement 12 | attributes: 13 | label: نیازمندی 14 | description: | 15 | چرا به این امکان نیازمند شده‌اید؟ مشکلی که با آن روبرو شده‌اید را دقیقا شرح دهید: 16 | validations: 17 | required: true 18 | - type: textarea 19 | id: solution 20 | attributes: 21 | label: راه‌حل 22 | description: | 23 | چه راه‌حلی برای رفع این نیاز می‌توانیم به شما ارائه کنیم؟ پیشنهاد(های) خود را شفاف و دقیق شرح دهید: 24 | validations: 25 | required: true 26 | - type: textarea 27 | id: similar-features 28 | attributes: 29 | label: امکانات مشابه 30 | description: | 31 | سایر صرافی‌های بزرگ چه امکانات مشابهی برای رفع این نیاز در نظر گرفته‌اند؟ با ضمیمه کردن پیوند به مستندات آنها ما را در تحلیل سریع‌تر درخواست‌های شما یاری کنید: 32 | - type: textarea 33 | id: additional-words 34 | attributes: 35 | label: توضیح تکمیلی 36 | description: | 37 | هر چیزی که از قلم مانده و به فهم بهتر ما کمک می‌کند در اینجا شرح دهید: 38 | -------------------------------------------------------------------------------- /source/internal.html.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: مستندات API داخلی نوبیتکس 3 | lang: fa 4 | language_tabs: 5 | - shell 6 | - javascript 7 | - java 8 | - swift 9 | - plaintext 10 | includes: 11 | - internal/2fa 12 | - internal/notifications 13 | - internal/wallet_invoice 14 | - internal/price_alerts 15 | - internal/transactions 16 | - internal/gift 17 | - internal/ticketing 18 | - internal/batch_actions 19 | - internal/active_order_count 20 | - internal/cobank_withdraw 21 | toc_footers: 22 | - سایت نوبیتکس 23 | --- 24 | 25 | # مستندات API داخلی نوبیتکس 26 | 27 | > جهت استفاده از نمونه کدهای مستند ابتدا تنظیمات زیر را استفاده نمایید. 28 | 29 | ```shell 30 | sudo apt install curl 31 | ``` 32 | 33 | ```javascript 34 | const axios = require("axios"); 35 | 36 | const api = axios.create({baseURL: "https://apiv2.nobitex.ir"}); 37 | ``` 38 | 39 | ```java 40 | import com.google.gson.JsonObject; 41 | import retrofit2.Call; 42 | import retrofit2.http.GET; 43 | import retrofit2.http.POST; 44 | import retrofit2.http.Headers; 45 | import retrofit2.http.Query; 46 | import retrofit2.http.Field; 47 | import retrofit2.http.FormUrlEncoded; 48 | import retrofit2.converter.gson.GsonConverterFactory; 49 | 50 | Retrofit retrofit = new Retrofit.Builder() 51 | .baseUrl('https://apiv2.nobitex.ir') 52 | .addConverterFactory(GsonConverterFactory.create()) 53 | .build(); 54 | ``` 55 | 56 | ```swift 57 | // Contact us 58 | ``` 59 | 60 | مستندات این بخش، سایر APIهای نوبیتکس را که عموما با بازار نوبیتکس ارتباطی نداشته و بیشتر ناظر به نیازهای ارتباطی و عملکردی سایت و اپلیکیشن نوبیتکس می‌باشد، توضیح می‌دهد. 61 | 62 | توجه داشته باشید بعضی از APIها نیاز به احراز هویت و دریافت توکن دارد که می‌توانید از [مستندات احراز هویت](/#intro-auth) نحوه عملکرد آن را مطالعه کنید. 63 | -------------------------------------------------------------------------------- /Vagrantfile: -------------------------------------------------------------------------------- 1 | Vagrant.configure(2) do |config| 2 | config.vm.box = "ubuntu/bionic64" 3 | config.vm.network :forwarded_port, guest: 4567, host: 4567 4 | config.vm.provider "virtualbox" do |vb| 5 | vb.memory = "2048" 6 | end 7 | 8 | config.vm.provision "bootstrap", 9 | type: "shell", 10 | inline: <<-SHELL 11 | # add nodejs v12 repository 12 | curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - 13 | 14 | sudo apt-get update 15 | sudo apt-get install -yq ruby ruby-dev 16 | sudo apt-get install -yq pkg-config build-essential nodejs git libxml2-dev libxslt-dev 17 | sudo apt-get autoremove -yq 18 | gem install --no-ri --no-rdoc bundler 19 | SHELL 20 | 21 | # add the local user git config to the vm 22 | config.vm.provision "file", source: "~/.gitconfig", destination: ".gitconfig" 23 | 24 | config.vm.provision "install", 25 | type: "shell", 26 | privileged: false, 27 | inline: <<-SHELL 28 | echo "==============================================" 29 | echo "Installing app dependencies" 30 | cd /vagrant 31 | sudo gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)" 32 | bundle config build.nokogiri --use-system-libraries 33 | bundle install 34 | SHELL 35 | 36 | config.vm.provision "run", 37 | type: "shell", 38 | privileged: false, 39 | run: "always", 40 | inline: <<-SHELL 41 | echo "==============================================" 42 | echo "Starting up middleman at http://localhost:4567" 43 | echo "If it does not come up, check the ~/middleman.log file for any error messages" 44 | cd /vagrant 45 | bundle exec middleman server --watcher-force-polling --watcher-latency=1 &> ~/middleman.log & 46 | SHELL 47 | end 48 | -------------------------------------------------------------------------------- /source/includes/_faq.md: -------------------------------------------------------------------------------- 1 |

سوالات متداول

2 | 3 |

سوالی در مورد لاگین و دریافت توکن دارم

4 | در این زمینه ابتدا مطالعه توضیحات [احراز هویت و توکن](#intro-auth)، [راهنمای شروع به کار با API](#quickstart) و [روش پیشنهادی دریافت توکن](#auth-intro) پیشنهاد می‌شود. سپس می‌توانید در بخش [سوالات متداول دریافت توکن](#login-faq) برخی سوالات متداول در این زمینه را مشاهده کنید. 5 | 6 | 7 | ## آیا نوبیتکس محیط آزمایشی (Test) دارد؟ 8 | بله، شما میتوانید برای استفاده از کلیه امکانات بازار نوبیتکس و همچنین api ها از محیط آزمایشی نوبیتکس به آدرس‌های ذیل استفاده نمائید: 9 | 10 | آدرس نوبیتکس آزمایشی : https://testnet.nobitex.ir 11 | 12 | آدرس api آزمایشی : https://testnetapiv2.nobitex.ir 13 | 14 | 15 | ## آیا برای استفاده از apiها محدودیتی وجود دارد؟ 16 | بله، برای مثال شما حتماً باید از IPهای ایران درخواست خود را ارسال نمائید، و یا محدودیت‌های مخصوص به هر api که در توضیحات هر کدام از endpointها آورده شده است. 17 | 18 | 19 | ## فرمت استفاده شده برای تاریخ چیست؟ 20 | ساعت یونیکس Unix Time 21 | یکی از مقیاس اندازه‌گیری زمان آنی است. این عدد که تعداد ثانیه‌ها از ساعت ۰۰:۰۰:۰۰ ساعت هماهنگ جهانی اول ژانویه ۱۹۷۰ است، شامل ثانیه‌های کبیسه نمی‌شود. برای زمان‌های قبل از اول ژانویه از اعداد منفی استفاده می‌شود. 22 | 23 | به عنوان مثال [۰۱/۰۱/۱۹۷۰ ۰۰:۰۰:۰۰] برابر با صفر (۰) و [۰۱/۰۱/۱۹۷۰ ۰۰:۰۱:۰۰] برابر با شصت(۶۰) است. 24 | 25 | فرمول اصلی آن به این صورت می‌باشد: 26 | 27 | تعداد (روزهای گذشته از اول ژانویه ۱۹۷۰) × ۸۶۴۰۰(تعداد ثانیه‌های هر روز) 28 | 29 | به منظور مطالعه بیشتر به آدرس زیر مراجعه نمائید 30 | https://en.wikipedia.org/wiki/Unix_time 31 | 32 | 33 | ## آیا برای apiها کدهای نمونه تهیه شده است؟ 34 | بله، collection کلیه api ها برای استفاده در برنامه postman تهیه و از اینجا میتوانید به آن دسترسی داشته باشید. در این collection شما میتوانید نمونه فراخوانی هر کدام از این apiها را به زبان‌های مختلف برنامه نویسی نظیر پی اچ پی، پایتون، سی شارپ و … در این مجموعه مشاهده کرده و آن را در سیستم خود اجرا نمائید. 35 | -------------------------------------------------------------------------------- /config.rb: -------------------------------------------------------------------------------- 1 | # Unique header generation 2 | require './lib/unique_head.rb' 3 | 4 | # Markdown 5 | set :markdown_engine, :redcarpet 6 | set :markdown, 7 | fenced_code_blocks: true, 8 | smartypants: true, 9 | disable_indented_code_blocks: true, 10 | prettify: true, 11 | strikethrough: true, 12 | tables: true, 13 | with_toc_data: true, 14 | no_intra_emphasis: true, 15 | renderer: UniqueHeadCounter 16 | 17 | # Assets 18 | set :css_dir, 'stylesheets' 19 | set :js_dir, 'javascripts' 20 | set :images_dir, 'images' 21 | set :fonts_dir, 'fonts' 22 | 23 | # Activate the syntax highlighter 24 | activate :syntax 25 | ready do 26 | require './lib/monokai_sublime_slate.rb' 27 | require './lib/multilang.rb' 28 | end 29 | 30 | activate :sprockets 31 | 32 | activate :autoprefixer do |config| 33 | config.browsers = ['last 2 version', 'Firefox ESR'] 34 | config.cascade = false 35 | config.inline = true 36 | end 37 | 38 | # Github pages require relative links 39 | activate :relative_assets 40 | set :relative_links, true 41 | 42 | # Build Configuration 43 | configure :build do 44 | # We do want to hash woff and woff2 as there's a bug where woff2 will use 45 | # woff asset hash which breaks things. Trying to use a combination of ignore and 46 | # rewrite_ignore does not work as it conflicts weirdly with relative_assets. Disabling 47 | # the .woff2 extension only does not work as .woff will still activate it so have to 48 | # have both. See https://github.com/slatedocs/slate/issues/1171 for more details. 49 | activate :asset_hash, :exts => app.config[:asset_extensions] - %w[.woff .woff2] 50 | # If you're having trouble with Middleman hanging, commenting 51 | # out the following two lines has been known to help 52 | activate :minify_css 53 | activate :minify_javascript 54 | # activate :gzip 55 | end 56 | 57 | # Deploy Configuration 58 | # If you want Middleman to listen on a different port, you can set that below 59 | set :port, 4567 60 | 61 | helpers do 62 | require './lib/toc_data.rb' 63 | end 64 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/support_question.yml: -------------------------------------------------------------------------------- 1 | name: سوال پشتیبانی 2 | description: برای نحوه استفاده از ما کمک بخواهید 3 | title: "[پشتیبانی]: " 4 | labels: ["api-usage"] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | **توجه:** قبل از ثبت مورد جدید [مستندات مربوطه](https://apidocs.nobitex.ir/) و [موردهای قدیمی پشتیبانی](https://github.com/nobitex/docs-api/issues?q=is%3Aissue+label%3Aapi-usage) را بخوانید. در صورت یافتن مورد مشابه همانجا مسئله خود را مطرح کنید 10 | - type: textarea 11 | id: goal 12 | attributes: 13 | label: هدف 14 | description: | 15 | به طور اجمالی شرح دهید می‌خواهید چه کاری از طریق نوبیتکس انجام دهید: 16 | placeholder: | 17 | مثلا: ثبت سفارش خرید دوج کوین به قیمت بازار 18 | validations: 19 | required: true 20 | - type: textarea 21 | id: environment 22 | attributes: 23 | label: محیط درخواست 24 | description: | 25 | ویژگی‌های موثر در درخواست را طبق مستندات آن ارائه کنید: 26 | placeholder: | 27 | - ابزار درخواست (مرورگر/ابزار/برنامه/...) 28 | - زبان برنامه (cURL/Python/PHP/...) 29 | - محل درخواست (local/VPS/...) 30 | - درخواست IP (داخلی/خارجی) 31 | - ... 32 | value: | 33 | - ابزار درخواست (مرورگر/ابزار/برنامه/...) 34 | - زبان برنامه (cURL/Python/PHP/...) 35 | - محل درخواست (local/VPS/...) 36 | - درخواست IP (داخلی/خارجی) 37 | - ... 38 | - type: textarea 39 | id: request 40 | attributes: 41 | label: نحوه درخواست 42 | description: | 43 | کد مورد استفاده خود را ضمیمه کنید: 44 | این بخش از کد باید شامل اطلاعات زیر باشد: 1. آدرس 2. داده 3. هدر 4. محیط (آدرس پایه) 45 | داده‌های حساس خود مانند توکن هویت یا شناسه سفارشات را با * مخدوش نمایید 46 | placeholder: | 47 | مثلا: 48 | ```python 49 | import requests 50 | url = 'https://apiv2.nobitex.ir/market/orders/add' 51 | headers = {'Authorization': 'Token abt*********************xz'} 52 | data = {'srcCurrency': 'doge', 'type': 'buy', 'execution': 'market', ...} 53 | response = requests.post(url, json=data, headers=headers) 54 | print(response.json()) 55 | ``` 56 | validations: 57 | required: true 58 | - type: textarea 59 | id: response 60 | attributes: 61 | label: پاسخ دریافتی 62 | description: | 63 | پیغام خطای نوبیتکس را در اینجا درج کنید: 64 | placeholder: | 65 | ```{"status": "failed", "code": "SampleCode",...}``` 66 | validations: 67 | required: true 68 | - type: textarea 69 | id: additional-data 70 | attributes: 71 | label: اطلاعات تکمیلی 72 | description: | 73 | هر اطلاعات دیگری که برای کشف ریشه مشکل می‌تواند به ما کمک کند در اینجا ضمیمه کنید: 74 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.yml: -------------------------------------------------------------------------------- 1 | name: گزارش خطا 2 | description: برای کمک به بهبود ما، مشاهدات خود را گزارش کنید 3 | title: "[خطا]: " 4 | labels: ["bug"] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | **توجه:** قبل از ثبت مورد جدید، [مستندات عملکرد فعلی](https://apidocs.nobitex.ir/) و [موردهای قدیمی خطا](https://github.com/nobitex/docs-api/issues?q=is%3Aissue+label%3Abug) را بخوانید. در صورت یافتن مورد مشابه همانجا مسئله خود را مطرح کنید 10 | - type: textarea 11 | id: description 12 | attributes: 13 | label: شرح خطا 14 | description: | 15 | خطای مشاهده شده را به طور اجمالی شرح دهید: 16 | - type: textarea 17 | id: request 18 | attributes: 19 | label: جزئیات درخواست 20 | placeholder: | 21 | 1. آدرس: `POST /sample/url` 22 | 2. داده: 23 | - key1: value1 24 | - key2: value2 25 | - ... 26 | 3. هدر: 27 | - Authorization: yes 28 | - ... 29 | 4. محیط: 30 | - تست‌نت 31 | - اصلی 32 | value: | 33 | 1. آدرس: `POST /sample/url` 34 | 2. داده: 35 | - key1: value1 36 | - key2: value2 37 | - ... 38 | 3. هدر: 39 | - Authorization: yes 40 | - ... 41 | 4. محیط: 42 | - تست‌نت 43 | - اصلی 44 | validations: 45 | required: true 46 | - type: textarea 47 | id: current-response 48 | attributes: 49 | label: پاسخ دریافتی 50 | description: | 51 | پاسخ کامل نوبیتکس را در اینجا درج کنید. داده‌های حساس خود را در آن با * مخدوش نمایید: 52 | placeholder: | 53 | ```{"status": "ok", "result": {"id": 12***5,...}``` 54 | validations: 55 | required: true 56 | - type: textarea 57 | id: expected-response 58 | attributes: 59 | label: پاسخ مورد انتظار 60 | description: | 61 | شرح دقیقی از رفتار مورد انتظار خود از نوبیتکس بدهید: 62 | validations: 63 | required: true 64 | - type: textarea 65 | id: reference 66 | attributes: 67 | label: پیوند مراجع 68 | description: | 69 | در صورتی که رفتار نوبیتکس با توصیفات مستندات مغایرت دارد، لینک یا تصویر بخش مد نظر خود را ضمیمه کنید/ 70 | در صورتی که رفتار با منطق کاری صرافی‌ها تفاوت دارد، لینک مقاله تایید کننده پاسخ مورد انتظار را ضمیمه کنید: 71 | placeholder: | 72 | - https://apidocs.nobitex.ir/#example-section 73 | - https://www.investopedia.com/... 74 | - ... 75 | - type: textarea 76 | id: additional-data 77 | attributes: 78 | label: اطلاعات تکمیلی 79 | description: | 80 | هر اطلاعات دیگری که برای کشف ریشه خطا می‌تواند به ما کمک کند: 81 | placeholder: | 82 | - محل استفاده (محلی/VPS/...) 83 | - محل IP (داخلی/خارجی) 84 | - ... 85 | -------------------------------------------------------------------------------- /source/terms/index.html.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: قوانین و شرایط استفاده از API نوبیتکس 3 | lang: fa 4 | toc_footers: 5 | - مستندات API نوبیتکس 6 | - سابقه تغییرات API 7 | - سایت نوبیتکس 8 | --- 9 | 10 | # قوانین و شرایط استفاده از API نوبیتکس 11 | 12 | ## ملاحظات استفاده عمومی 13 | 14 | * تنها بخشی از API نوبیتکس که در مستندات ذکر شده باشند، API عمومی و قابل استفاده نوبیتکس به شمار می‌آیند. اگر endpoint یا فیلدی در مستندات ذکر نشده باشد، ممکن است بدون اطلاع قبلی دچار تغییر شود. 15 | * ممکن است در طول زمان تغییراتی در API عمومی نوبیتکس رخ دهد. این تغییرات در صفحه 16 | «[سابقه تغییرات API نوبیتکس](/changelog/)» 17 | اطلاع‌رسانی خواهند شد. لازم است استفاده کنندگان به صورت منظم و هفتگی این صفحه را رصد نمایند و تغییرات لازم را در برنامه‌های خود اعمال نمایند. 18 | * نوبیتکس تضمین سطح سرویس SLA برای API خود به عموم مشتریان ارائه نمی‌دهد و استفاده کنندگان از API باید تمهیدات لازم در خصوص تشخیص و واکنش به اختلالات احتمالی در سرویس را انجام دهند. نوبیتکس در قبال هیچ گونه شرایط یا تغییراتی در API که احتمالاً باعث ایجاد مشکل در کد نوشته شده توسط کاربران شود، نخواهد داشت. 19 | * در صورت دریافت پاسخ مبنی بر استفاده نادرست از API، مانند خطای 429 یا سایر خطاهای ناشی از نرخ بالای درخواست‌ها یا ورودی نامعتبر، استفاده کننده ملزم است که واکنش مناسب را نسبت به خطا نشان داده و از تکرار اشتباه با بسامد بالا خودداری نماید. در صورت تشخیص استفاده نادرست و عدم واکنش مناسب به پیام‌های خطای دریافتی، ممکن است IP درخواست دهنده به صورت موقت یا دائمی در سرویس نوبیتکس مسدود شود. 20 | * استفاده آگاهانه از API نوبیتکس جهت نفوذ یا حملات DDoS یا سایر اعمال مخرب خلاف شرایط استفاده نوبیتکس است و در صورت مشاهده حساب‌های کاربری دخیل در آن مسدود خواهند شد. 21 | 22 | 23 | ## ملاحظات برنامه‌نویسی 24 | 25 | * خروجی API نوبیتکس معمولاً در قالب JSON ارائه می‌شود. لازم به دقت است که ممکن است علاوه بر فیلدهایی که در مستندات برای خروجی ذکر شده‌اند، فیلدهای دیگری نیز در خروجی پاسخ وجود داشته باشند. پیشنهاد می‌شود که برنامه خود را به صورتی توسعه دهید که در صورت وجود فیلدهای دیگری علاوه بر فیلدهای مورد انتظار، دچار خطا نشود. 26 | 27 | 28 | ## ملاحظات مرتبط با سرویس کلادفلر 29 | 30 | * نوبیتکس از سرویس کلادفلر به عنوان CDN و واسط API استفاده می‌نماید. در صورتی که به هر دلیل کلادفلر ترافیک ارسالی شما را مشکوک یا مخرب تشخیص دهد ممکن است برخی یا تمام درخواست‌های شما را رد کند. مدیریت این شرایط به دلیل اهمیت سرویس کلادفلر جهت جلوگیری از حملات DDoS ضروری و خارج از کنترل نوبیتکس است و استفاده کنندگان از API ملزم هستند نکات عمومی Fair Use را لحاظ نمایند. 31 | * امکان استفاده از API نوبیتکس هم از آی‌پی داخل و هم از آی‌پی خارج از کشور ممکن است و محدودیتی بابت استفاده از آی‌پی ایرانی روی درخواست‌ها اعمال نمی‌شود. 32 | * اتصال تمامی کاربران عادی سایت و اپ و API نوبیتکس به واسطه سرویس کلادفلر با سرورهای نوبیتکس که در داخل ایران مستقر هستند، برقرار می‌شود و امکان ارائه کانال مستقیم‌تر ارتباطی وجود ندارد. کاربران می‌توانند در صورت نیاز به کاهش تاخیر ارتباطی، نسبت به حداقل‌سازی تاخیر ارتباطی خود تا سرورهای لبه کلادفلر اقدام نمایند. 33 | -------------------------------------------------------------------------------- /source/fonts/slate.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Generated by IcoMoon 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /source/javascripts/app/_search.js: -------------------------------------------------------------------------------- 1 | //= require ../lib/_lunr 2 | //= require ../lib/_jquery 3 | //= require ../lib/_jquery.highlight 4 | ;(function () { 5 | 'use strict'; 6 | 7 | var content, searchResults; 8 | var highlightOpts = { element: 'span', className: 'search-highlight' }; 9 | var searchDelay = 0; 10 | var timeoutHandle = 0; 11 | var index; 12 | 13 | function populate() { 14 | index = lunr(function(){ 15 | 16 | this.ref('id'); 17 | this.field('title', { boost: 10 }); 18 | this.field('body'); 19 | this.pipeline.add(lunr.trimmer, lunr.stopWordFilter); 20 | var lunrConfig = this; 21 | 22 | $('h1, h2').each(function() { 23 | var title = $(this); 24 | var body = title.nextUntil('h1, h2'); 25 | lunrConfig.add({ 26 | id: title.prop('id'), 27 | title: title.text(), 28 | body: body.text() 29 | }); 30 | }); 31 | 32 | }); 33 | determineSearchDelay(); 34 | } 35 | 36 | $(populate); 37 | $(bind); 38 | 39 | function determineSearchDelay() { 40 | if (index.tokenSet.toArray().length>5000) { 41 | searchDelay = 300; 42 | } 43 | } 44 | 45 | function bind() { 46 | content = $('.content'); 47 | searchResults = $('.search-results'); 48 | 49 | $('#input-search').on('keyup',function(e) { 50 | var wait = function() { 51 | return function(executingFunction, waitTime){ 52 | clearTimeout(timeoutHandle); 53 | timeoutHandle = setTimeout(executingFunction, waitTime); 54 | }; 55 | }(); 56 | wait(function(){ 57 | search(e); 58 | }, searchDelay); 59 | }); 60 | } 61 | 62 | function search(event) { 63 | 64 | var searchInput = $('#input-search')[0]; 65 | 66 | unhighlight(); 67 | searchResults.addClass('visible'); 68 | 69 | // ESC clears the field 70 | if (event.keyCode === 27) searchInput.value = ''; 71 | 72 | if (searchInput.value) { 73 | var results = index.search(searchInput.value).filter(function(r) { 74 | return r.score > 0.0001; 75 | }); 76 | 77 | if (results.length) { 78 | searchResults.empty(); 79 | $.each(results, function (index, result) { 80 | var elem = document.getElementById(result.ref); 81 | searchResults.append("
  • " + $(elem).text() + "
  • "); 82 | }); 83 | highlight.call(searchInput); 84 | } else { 85 | searchResults.html('
  • '); 86 | $('.search-results li').text('No Results Found for "' + searchInput.value + '"'); 87 | } 88 | } else { 89 | unhighlight(); 90 | searchResults.removeClass('visible'); 91 | } 92 | } 93 | 94 | function highlight() { 95 | if (this.value) content.highlight(this.value, highlightOpts); 96 | } 97 | 98 | function unhighlight() { 99 | content.unhighlight(highlightOpts); 100 | } 101 | })(); 102 | 103 | -------------------------------------------------------------------------------- /source/includes/_symbols.md: -------------------------------------------------------------------------------- 1 | 4 | 5 | 8 | 9 | 12 | 13 | 16 | 17 | 18 | 27 | -------------------------------------------------------------------------------- /source/stylesheets/print.css.scss: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | @import 'normalize'; 3 | @import 'variables'; 4 | @import 'icon-font'; 5 | 6 | /* 7 | Copyright 2008-2013 Concur Technologies, Inc. 8 | 9 | Licensed under the Apache License, Version 2.0 (the "License"); you may 10 | not use this file except in compliance with the License. You may obtain 11 | a copy of the License at 12 | 13 | http://www.apache.org/licenses/LICENSE-2.0 14 | 15 | Unless required by applicable law or agreed to in writing, software 16 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 17 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 18 | License for the specific language governing permissions and limitations 19 | under the License. 20 | */ 21 | 22 | $print-color: #999; 23 | $print-color-light: #ccc; 24 | $print-font-size: 12px; 25 | 26 | body { 27 | @extend %default-font; 28 | } 29 | 30 | .tocify, .toc-footer, .lang-selector, .search, #nav-button { 31 | display: none; 32 | } 33 | 34 | .tocify-wrapper>img { 35 | margin: 0 auto; 36 | display: block; 37 | } 38 | 39 | .content { 40 | font-size: 12px; 41 | 42 | pre, code { 43 | @extend %code-font; 44 | @extend %break-words; 45 | border: 1px solid $print-color; 46 | border-radius: 5px; 47 | font-size: 0.8em; 48 | } 49 | 50 | pre { 51 | code { 52 | border: 0; 53 | } 54 | } 55 | 56 | pre { 57 | padding: 1.3em; 58 | } 59 | 60 | code { 61 | padding: 0.2em; 62 | } 63 | 64 | table { 65 | border: 1px solid $print-color; 66 | tr { 67 | border-bottom: 1px solid $print-color; 68 | } 69 | td,th { 70 | padding: 0.7em; 71 | } 72 | } 73 | 74 | p { 75 | line-height: 1.5; 76 | } 77 | 78 | a { 79 | text-decoration: none; 80 | color: #000; 81 | } 82 | 83 | h1 { 84 | @extend %header-font; 85 | font-size: 2.5em; 86 | padding-top: 0.5em; 87 | padding-bottom: 0.5em; 88 | margin-top: 1em; 89 | margin-bottom: $h1-margin-bottom; 90 | border: 2px solid $print-color-light; 91 | border-width: 2px 0; 92 | text-align: center; 93 | } 94 | 95 | h2 { 96 | @extend %header-font; 97 | font-size: 1.8em; 98 | margin-top: 2em; 99 | border-top: 2px solid $print-color-light; 100 | padding-top: 0.8em; 101 | } 102 | 103 | h1+h2, h1+div+h2 { 104 | border-top: none; 105 | padding-top: 0; 106 | margin-top: 0; 107 | } 108 | 109 | h3, h4 { 110 | @extend %header-font; 111 | font-size: 0.8em; 112 | margin-top: 1.5em; 113 | margin-bottom: 0.8em; 114 | text-transform: uppercase; 115 | } 116 | 117 | h5, h6 { 118 | text-transform: uppercase; 119 | } 120 | 121 | aside { 122 | padding: 1em; 123 | border: 1px solid $print-color-light; 124 | border-radius: 5px; 125 | margin-top: 1.5em; 126 | margin-bottom: 1.5em; 127 | line-height: 1.6; 128 | } 129 | 130 | aside:before { 131 | vertical-align: middle; 132 | padding-right: 0.5em; 133 | font-size: 14px; 134 | } 135 | 136 | aside.notice:before { 137 | @extend %icon-info-sign; 138 | } 139 | 140 | aside.warning:before { 141 | @extend %icon-exclamation-sign; 142 | } 143 | 144 | aside.success:before { 145 | @extend %icon-ok-sign; 146 | } 147 | } 148 | 149 | .copy-clipboard { 150 | @media print { 151 | display: none 152 | } 153 | } 154 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | activesupport (6.1.7.3) 5 | concurrent-ruby (~> 1.0, >= 1.0.2) 6 | i18n (>= 1.6, < 2) 7 | minitest (>= 5.1) 8 | tzinfo (~> 2.0) 9 | zeitwerk (~> 2.3) 10 | addressable (2.8.0) 11 | public_suffix (>= 2.0.2, < 5.0) 12 | autoprefixer-rails (10.2.5.0) 13 | execjs (< 2.8.0) 14 | backports (3.21.0) 15 | coffee-script (2.4.1) 16 | coffee-script-source 17 | execjs 18 | coffee-script-source (1.12.2) 19 | concurrent-ruby (1.2.2) 20 | contracts (0.13.0) 21 | dotenv (2.7.6) 22 | erubis (2.7.0) 23 | execjs (2.7.0) 24 | fast_blank (1.0.0) 25 | fastimage (2.2.4) 26 | ffi (1.15.0) 27 | haml (5.2.1) 28 | temple (>= 0.8.0) 29 | tilt 30 | hamster (3.0.0) 31 | concurrent-ruby (~> 1.0) 32 | hashie (3.6.0) 33 | i18n (1.6.0) 34 | concurrent-ruby (~> 1.0) 35 | kramdown (2.3.1) 36 | rexml 37 | listen (3.0.8) 38 | rb-fsevent (~> 0.9, >= 0.9.4) 39 | rb-inotify (~> 0.9, >= 0.9.7) 40 | memoist (0.16.2) 41 | middleman (4.4.0) 42 | coffee-script (~> 2.2) 43 | haml (>= 4.0.5) 44 | kramdown (>= 2.3.0) 45 | middleman-cli (= 4.4.0) 46 | middleman-core (= 4.4.0) 47 | middleman-autoprefixer (3.0.0) 48 | autoprefixer-rails (~> 10.0) 49 | middleman-core (>= 4.0.0) 50 | middleman-cli (4.4.0) 51 | thor (>= 0.17.0, < 2.0) 52 | middleman-core (4.4.0) 53 | activesupport (>= 6.1, < 7.0) 54 | addressable (~> 2.4) 55 | backports (~> 3.6) 56 | bundler (~> 2.0) 57 | contracts (~> 0.13.0) 58 | dotenv 59 | erubis 60 | execjs (~> 2.0) 61 | fast_blank 62 | fastimage (~> 2.0) 63 | hamster (~> 3.0) 64 | hashie (~> 3.4) 65 | i18n (~> 1.6.0) 66 | listen (~> 3.0.0) 67 | memoist (~> 0.14) 68 | padrino-helpers (~> 0.15.0) 69 | parallel 70 | rack (>= 1.4.5, < 3) 71 | sassc (~> 2.0) 72 | servolux 73 | tilt (~> 2.0.9) 74 | toml 75 | uglifier (~> 3.0) 76 | webrick 77 | middleman-sprockets (4.1.1) 78 | middleman-core (~> 4.0) 79 | sprockets (>= 3.0) 80 | middleman-syntax (3.2.0) 81 | middleman-core (>= 3.2) 82 | rouge (~> 3.2) 83 | mini_portile2 (2.8.7) 84 | minitest (5.18.0) 85 | nokogiri (1.18.8) 86 | mini_portile2 (~> 2.8.2) 87 | racc (~> 1.4) 88 | padrino-helpers (0.15.1) 89 | i18n (>= 0.6.7, < 2) 90 | padrino-support (= 0.15.1) 91 | tilt (>= 1.4.1, < 3) 92 | padrino-support (0.15.1) 93 | parallel (1.20.1) 94 | parslet (2.0.0) 95 | public_suffix (4.0.6) 96 | racc (1.8.1) 97 | rack (2.2.13) 98 | rb-fsevent (0.11.0) 99 | rb-inotify (0.10.1) 100 | ffi (~> 1.0) 101 | redcarpet (3.5.1) 102 | rexml (3.3.6) 103 | strscan 104 | rouge (3.26.0) 105 | sass (3.7.4) 106 | sass-listen (~> 4.0.0) 107 | sass-listen (4.0.0) 108 | rb-fsevent (~> 0.9, >= 0.9.4) 109 | rb-inotify (~> 0.9, >= 0.9.7) 110 | sassc (2.4.0) 111 | ffi (~> 1.9) 112 | servolux (0.13.0) 113 | sprockets (3.7.2) 114 | concurrent-ruby (~> 1.0) 115 | rack (> 1, < 3) 116 | strscan (3.1.0) 117 | temple (0.8.2) 118 | thor (1.1.0) 119 | tilt (2.0.10) 120 | toml (0.3.0) 121 | parslet (>= 1.8.0, < 3.0.0) 122 | tzinfo (2.0.6) 123 | concurrent-ruby (~> 1.0) 124 | uglifier (3.2.0) 125 | execjs (>= 0.3.0, < 3) 126 | webrick (1.8.2) 127 | zeitwerk (2.6.7) 128 | 129 | PLATFORMS 130 | ruby 131 | 132 | DEPENDENCIES 133 | middleman (~> 4.4) 134 | middleman-autoprefixer (~> 3.0) 135 | middleman-sprockets (~> 4.1) 136 | middleman-syntax (~> 3.2) 137 | nokogiri (>= 1.18.8) 138 | rack (>= 2.2.13, < 3.0) 139 | redcarpet (~> 3.5.0) 140 | rouge (~> 3.21) 141 | sass 142 | webrick 143 | 144 | RUBY VERSION 145 | ruby 3.1.0 146 | 147 | BUNDLED WITH 148 | 2.6.8 149 | -------------------------------------------------------------------------------- /source/includes/internal/_transactions.md: -------------------------------------------------------------------------------- 1 | #تراکنش‌های مالی 2 | هر گونه تغییر در موجودی کیف‌پول کاربر توسط یک تراکنش ایجاد و ثبت می‌شود. افزایش یا کسری موجودی در اثر واریز، برداشت، معامله و کارمزد همگی نمونه‌ای از تراکنش‌های مالی کاربر هستند. 3 | 4 | 5 | ### نکات و ملاحظات 6 | احراز هویت در API های این مجموعه الزامی است. 7 | 8 | 9 | ## تاریخچه تراکنش‌ها 10 | 11 | >نمونه درخواست: 12 | 13 | ```shell 14 | curl 'https://apiv2.nobitex.ir/users/transactions-history' \ 15 | -H 'Authorization: Token yourTOKENhereHEX0000000000' 16 | ``` 17 | 18 | ```javascript 19 | api.get('/users/transactions-history', { 20 | headers: {Authorization: 'Token yourTOKENhereHEX0000000000'}, 21 | }).then((response) => { 22 | console.log(response); 23 | }); 24 | ``` 25 | 26 | ```java 27 | public interface APIService { 28 | @Headers({"Authorization: Token yourTOKENhereHEX0000000000"}) 29 | @GET("/users/transactions-history") 30 | Call listTransactions(); 31 | } 32 | 33 | APIService api = retrofit.create(APIService.class); 34 | 35 | Call call = api.listTransactions(); 36 | ``` 37 | 38 | ```plaintext 39 | GET /users/transactions-history HTTP/1.1 40 | Host: apiv2.nobitex.ir 41 | Authorization: Token yourTOKENhereHEX0000000000 42 | ``` 43 | 44 | > در صورت فراخوانی درست، پاسخ به این صورت خواهد بود: 45 | 46 | ```json 47 | { 48 | "status": "ok", 49 | "transactions": [ 50 | { 51 | "id": 1, 52 | "tp": "deposit", 53 | "type": "واریز", 54 | "created_at": "2021-11-13T14:35:18.766Z", 55 | "currency": "rls", 56 | "amount": "10000000.0000000000", 57 | "balance": "10000000.0000000000", 58 | "description": "واریز شتابی - شماره کارت: 123456******1234 - شماره پیگیری: 39577-bpiZpZw", 59 | "calculatedFee": null 60 | }, 61 | { 62 | "id": 2, 63 | "tp": "sell", 64 | "type": "معامله", 65 | "created_at": "2021-11-23T15:47:12.835Z", 66 | "currency": "rls", 67 | "amount": "-8000000.0000000000", 68 | "balance": "2000000.0000000000", 69 | "description": "خرید 32.00 USDT به قیمت واحد ﷼250000", 70 | "calculatedFee": null 71 | }, 72 | { 73 | "id": 3, 74 | "tp": "buy", 75 | "type": "معامله", 76 | "created_at": "2021-11-23T15:47:12.835Z", 77 | "currency": "usdt", 78 | "amount": "32.0000000000", 79 | "balance": "32.0000000000", 80 | "description": "خرید 32.00 USDT به قیمت واحد ﷼250000", 81 | "calculatedFee": null 82 | } 83 | ], 84 | "hasNext": false 85 | } 86 | ``` 87 | 88 | برای دریافت تاریخچه همه تراکنش‌های مالی کاربر از این نوع درخواست استفاده نمایید: 89 | 90 | * **درخواست:** `GET /users/transactions-history` 91 | * **محدودیت فراخوانی:** 60 درخواست در ساعت 92 | * **صفحه بندی:** دارد (پیش فرض 50) 93 | 94 | 95 | ### پارامترهای پاسخ 96 | 97 | پارامتر | نوع | توضیحات | نمونه 98 | ------- | ---- | --------- | --------- 99 | status | string | وضعیت پاسخ | ok 100 | transactions | list of Transaction | لیستی از تراکنش‌ها | [] 101 | hasNext | boolean | آیا لیست ادامه دارد؟ | false 102 | 103 | 104 | ### شی Transaction 105 | 106 | پارامتر | نوع | توضیحات | نمونه 107 | ------- | ---- | --------- | --------- 108 | id | integer | شناسه تراکنش | 1 109 | tp | string | نوع تراکنش | "deposit" 110 | type | string | نوع قابل فهم | "واریز" 111 | createdAt | iso-string | زمان ایجاد | "2021-11-13T14:35:18.766Z" 112 | currency | string | نوع ارز | "rls" 113 | amount | monetary | مقدار | "10000000.0000000000" 114 | balance | monetary | موجودی نهایی | "10000000.0000000000" 115 | description | string | توضیحات | "واریز شتابی - شماره کارت: 123456******1234 - شماره پیگیری: 39577-bpiZpZw" 116 | calculatedFee | monetary | کارمزد حساب شده | null 117 | 118 | 1. **نوع تراکنش:** می‌تواند یکی از مقادیر `deposit` (واریز)، `withdraw` (برداشت)، `buy` و `sell` (معامله)، `fee` (کارمزد)، `gateway` (درگاه)، `ex_src` و `ex_dst` (صرافی) و `manual` (سیستمی) باشد. 119 | 2. **مقدار:** در تراکنش مقدار منفی نشان‌دهنده کاهش موجودی و مقدار مثبت نشان‌دهنده افزایش موجودی می‌باشد. 120 | -------------------------------------------------------------------------------- /lib/monokai_sublime_slate.rb: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- # 2 | # frozen_string_literal: true 3 | 4 | # this is based on https://github.com/rouge-ruby/rouge/blob/master/lib/rouge/themes/monokai_sublime.rb 5 | # but without the added background, and changed styling for JSON keys to be soft_yellow instead of white 6 | 7 | module Rouge 8 | module Themes 9 | class MonokaiSublimeSlate < CSSTheme 10 | name 'monokai.sublime.slate' 11 | 12 | palette :black => '#000000' 13 | palette :bright_green => '#a6e22e' 14 | palette :bright_pink => '#f92672' 15 | palette :carmine => '#960050' 16 | palette :dark => '#49483e' 17 | palette :dark_grey => '#888888' 18 | palette :dark_red => '#aa0000' 19 | palette :dimgrey => '#75715e' 20 | palette :emperor => '#555555' 21 | palette :grey => '#999999' 22 | palette :light_grey => '#aaaaaa' 23 | palette :light_violet => '#ae81ff' 24 | palette :soft_cyan => '#66d9ef' 25 | palette :soft_yellow => '#e6db74' 26 | palette :very_dark => '#1e0010' 27 | palette :whitish => '#f8f8f2' 28 | palette :orange => '#f6aa11' 29 | palette :white => '#ffffff' 30 | 31 | style Generic::Heading, :fg => :grey 32 | style Literal::String::Regex, :fg => :orange 33 | style Generic::Output, :fg => :dark_grey 34 | style Generic::Prompt, :fg => :emperor 35 | style Generic::Strong, :bold => false 36 | style Generic::Subheading, :fg => :light_grey 37 | style Name::Builtin, :fg => :orange 38 | style Comment::Multiline, 39 | Comment::Preproc, 40 | Comment::Single, 41 | Comment::Special, 42 | Comment, :fg => :dimgrey 43 | style Error, 44 | Generic::Error, 45 | Generic::Traceback, :fg => :carmine 46 | style Generic::Deleted, 47 | Generic::Inserted, 48 | Generic::Emph, :fg => :dark 49 | style Keyword::Constant, 50 | Keyword::Declaration, 51 | Keyword::Reserved, 52 | Name::Constant, 53 | Keyword::Type, :fg => :soft_cyan 54 | style Literal::Number::Float, 55 | Literal::Number::Hex, 56 | Literal::Number::Integer::Long, 57 | Literal::Number::Integer, 58 | Literal::Number::Oct, 59 | Literal::Number, 60 | Literal::String::Char, 61 | Literal::String::Escape, 62 | Literal::String::Symbol, :fg => :light_violet 63 | style Literal::String::Doc, 64 | Literal::String::Double, 65 | Literal::String::Backtick, 66 | Literal::String::Heredoc, 67 | Literal::String::Interpol, 68 | Literal::String::Other, 69 | Literal::String::Single, 70 | Literal::String, :fg => :soft_yellow 71 | style Name::Attribute, 72 | Name::Class, 73 | Name::Decorator, 74 | Name::Exception, 75 | Name::Function, :fg => :bright_green 76 | style Name::Variable::Class, 77 | Name::Namespace, 78 | Name::Entity, 79 | Name::Builtin::Pseudo, 80 | Name::Variable::Global, 81 | Name::Variable::Instance, 82 | Name::Variable, 83 | Text::Whitespace, 84 | Text, 85 | Name, :fg => :white 86 | style Name::Label, :fg => :bright_pink 87 | style Operator::Word, 88 | Name::Tag, 89 | Keyword, 90 | Keyword::Namespace, 91 | Keyword::Pseudo, 92 | Operator, :fg => :bright_pink 93 | end 94 | end 95 | end 96 | -------------------------------------------------------------------------------- /source/stylesheets/_rtl.scss: -------------------------------------------------------------------------------- 1 | :lang(fa) { 2 | //////////////////////////////////////////////////////////////////////////////// 3 | // RTL Styles Variables 4 | //////////////////////////////////////////////////////////////////////////////// 5 | 6 | $default: auto; 7 | 8 | //////////////////////////////////////////////////////////////////////////////// 9 | // TABLE OF CONTENTS 10 | //////////////////////////////////////////////////////////////////////////////// 11 | 12 | #toc>ul>li>a>span { 13 | float: left; 14 | } 15 | 16 | .toc-wrapper { 17 | transition: right 0.3s ease-in-out !important; 18 | left: $default !important; 19 | #{right}: 0; 20 | } 21 | 22 | .toc-h2 { 23 | padding-#{right}: $nav-padding + $nav-indent; 24 | } 25 | 26 | #nav-button { 27 | #{right}: 0; 28 | transition: right 0.3s ease-in-out; 29 | &.open { 30 | right: $nav-width 31 | } 32 | } 33 | 34 | //////////////////////////////////////////////////////////////////////////////// 35 | // PAGE LAYOUT AND CODE SAMPLE BACKGROUND 36 | //////////////////////////////////////////////////////////////////////////////// 37 | .page-wrapper { 38 | margin-#{left}: $default !important; 39 | margin-#{right}: $nav-width; 40 | .dark-box { 41 | #{right}: $default; 42 | #{left}: 0; 43 | } 44 | } 45 | 46 | .lang-selector { 47 | width: $default !important; 48 | a { 49 | float: right; 50 | } 51 | } 52 | 53 | //////////////////////////////////////////////////////////////////////////////// 54 | // CODE SAMPLE STYLES 55 | //////////////////////////////////////////////////////////////////////////////// 56 | .content { 57 | &>h1, 58 | &>h2, 59 | &>h3, 60 | &>h4, 61 | &>h5, 62 | &>h6, 63 | &>p, 64 | &>table, 65 | &>ul, 66 | &>ol, 67 | &>aside, 68 | &>dl { 69 | margin-#{left}: $examples-width; 70 | margin-#{right}: $default !important; 71 | } 72 | &>ul, 73 | &>ol { 74 | padding-#{right}: $main-padding + 15px; 75 | } 76 | table { 77 | th, 78 | td { 79 | text-align: right; 80 | } 81 | } 82 | dd { 83 | margin-#{right}: 15px; 84 | } 85 | aside { 86 | aside:before { 87 | padding-#{left}: 0.5em; 88 | } 89 | .search-highlight { 90 | background: linear-gradient(to top right, #F7E633 0%, #F1D32F 100%); 91 | } 92 | } 93 | pre, 94 | blockquote { 95 | float: left !important; 96 | clear: left !important; 97 | } 98 | } 99 | 100 | //////////////////////////////////////////////////////////////////////////////// 101 | // TYPOGRAPHY 102 | //////////////////////////////////////////////////////////////////////////////// 103 | @font-face { 104 | font-family: 'IRANSans'; 105 | src : url("../fonts/IRANSansFaNum/eot/IRANSansWeb(FaNum).eot"), url('../fonts/IRANSansFaNum/woff/IRANSansWeb(FaNum).woff') format('woff'), url('../fonts/IRANSansFaNum/ttf/IRANSansWeb(FaNum).ttf') format('truetype'), url("../fonts/IRANSansFaNum/woff2/IRANSansWeb(FaNum).woff2") format('woff2'); 106 | } 107 | 108 | h1, 109 | h2, 110 | h3, 111 | h4, 112 | h5, 113 | h6, 114 | p, 115 | aside, 116 | td, 117 | th, 118 | li, 119 | a, 120 | table { 121 | direction: rtl; 122 | font-family: "Vazir", serif !important; 123 | } 124 | 125 | .toc-wrapper { 126 | text-align: right; 127 | direction: rtl; 128 | font-weight: 100 !important; 129 | } 130 | 131 | td, th, .content table th, .content table td, li { 132 | text-align: right !important; 133 | } 134 | 135 | code { 136 | direction: ltr; 137 | } 138 | 139 | 140 | //////////////////////////////////////////////////////////////////////////////// 141 | // RESPONSIVE DESIGN 142 | //////////////////////////////////////////////////////////////////////////////// 143 | @media (max-width: $tablet-width) { 144 | .toc-wrapper { 145 | #{right}: -$nav-width; 146 | &.open { 147 | #{right}: 0; 148 | } 149 | } 150 | .page-wrapper { 151 | margin-#{right}: 0; 152 | } 153 | } 154 | 155 | @media (max-width: $phone-width) { 156 | %left-col { 157 | margin-#{left}: 0; 158 | } 159 | } 160 | 161 | } 162 | -------------------------------------------------------------------------------- /source/javascripts/app/_toc.js: -------------------------------------------------------------------------------- 1 | //= require ../lib/_jquery 2 | //= require ../lib/_imagesloaded.min 3 | ;(function () { 4 | 'use strict'; 5 | 6 | var htmlPattern = /<[^>]*>/g; 7 | var loaded = false; 8 | 9 | var debounce = function(func, waitTime) { 10 | var timeout = false; 11 | return function() { 12 | if (timeout === false) { 13 | setTimeout(function() { 14 | func(); 15 | timeout = false; 16 | }, waitTime); 17 | timeout = true; 18 | } 19 | }; 20 | }; 21 | 22 | var closeToc = function() { 23 | $(".toc-wrapper").removeClass('open'); 24 | $("#nav-button").removeClass('open'); 25 | }; 26 | 27 | function loadToc($toc, tocLinkSelector, tocListSelector, scrollOffset) { 28 | var headerHeights = {}; 29 | var pageHeight = 0; 30 | var windowHeight = 0; 31 | var originalTitle = document.title; 32 | 33 | var recacheHeights = function() { 34 | headerHeights = {}; 35 | pageHeight = $(document).height(); 36 | windowHeight = $(window).height(); 37 | 38 | $toc.find(tocLinkSelector).each(function() { 39 | var targetId = $(this).attr('href'); 40 | if (targetId[0] === "#") { 41 | headerHeights[targetId] = $("#" + $.escapeSelector(targetId.substring(1))).offset().top; 42 | } 43 | }); 44 | }; 45 | 46 | var refreshToc = function() { 47 | var currentTop = $(document).scrollTop() + scrollOffset; 48 | 49 | if (currentTop + windowHeight >= pageHeight) { 50 | // at bottom of page, so just select last header by making currentTop very large 51 | // this fixes the problem where the last header won't ever show as active if its content 52 | // is shorter than the window height 53 | currentTop = pageHeight + 1000; 54 | } 55 | 56 | var best = null; 57 | for (var name in headerHeights) { 58 | if ((headerHeights[name] < currentTop && headerHeights[name] > headerHeights[best]) || best === null) { 59 | best = name; 60 | } 61 | } 62 | 63 | // Catch the initial load case 64 | if (currentTop == scrollOffset && !loaded) { 65 | best = window.location.hash; 66 | loaded = true; 67 | } 68 | 69 | var $best = $toc.find("[href='" + best + "']").first(); 70 | if (!$best.hasClass("active")) { 71 | // .active is applied to the ToC link we're currently on, and its parent