diff --git a/.devcontainer/README.md b/.devcontainer/README.md
new file mode 100644
index 000000000..8b7b24239
--- /dev/null
+++ b/.devcontainer/README.md
@@ -0,0 +1,28 @@
+# Development Container
+
+The development container config ([.devcontainer.json](./devcontainer.json)) enables starting a
+pre-configured [GitHub Codespaces](https://github.com/features/codespaces) environment ready to
+build and preview the docs in this repository.
+
+## Building a preview
+
+The current version of the docs will be automatically built the when a new codespace is created. To
+re-build the docs after making changes, simply run this command from the terminal:
+
+```shell
+rm -rf _build/ && make html
+```
+
+Note: you may need go to the main menu, click `View`, then `Terminal` if the terminal isn't visible.
+
+## Viewing the preview
+
+To preview the docs, run the following command in the terminal:
+
+```shell
+python -m http.server 8080 -d _build/html
+```
+
+This will start a simple Python web server on port 8080 in the codespace and open a preview of the
+site in VSCode's built-in simple browser. To preview in your actual browser, click the `PORTS` tab,
+right-click on `Doc Preview (8080)`, and select `Open in Browser`.
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644
index 000000000..b6d1da49d
--- /dev/null
+++ b/.devcontainer/devcontainer.json
@@ -0,0 +1,51 @@
+// For format details, see https://aka.ms/devcontainer.json. For config options, see the
+// README at: https://github.com/devcontainers/templates/tree/main/src/ubuntu
+{
+ "name": "Ubuntu",
+ // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
+ "image": "mcr.microsoft.com/devcontainers/base:jammy",
+ // Features to add to the dev container. More info: https://containers.dev/features.
+ "features": {
+ "ghcr.io/devcontainers/features/github-cli:1": {},
+ "ghcr.io/devcontainers/features/python:1": {}
+ },
+
+ // Use 'forwardPorts' to make a list of ports inside the container available locally.
+ // "forwardPorts": [],
+
+ // Use 'postCreateCommand' to run commands after the container is created.
+ "postCreateCommand": "./.devcontainer/postCreateCommands.sh",
+
+ // Configure tool-specific properties.
+ "customizations": {
+ "codespaces": {
+ "openFiles": [
+ ".devcontainer/README.md",
+ "README.md"
+ ]
+ },
+ "vscode": {
+ "extensions": [
+ "lextudio.restructuredtext",
+ "trond-snekvik.simple-rst",
+ "DavidAnson.vscode-markdownlint",
+ "ZainChen.json",
+ "stkb.rewrap"
+ ]
+ }
+ },
+ "portsAttributes": {
+ "8080": {
+ "label": "Doc Preview",
+ "onAutoForward": "openPreview"
+ }
+ }
+
+ // // Configure command(s) to run after starting
+ // "postStartCommand": {
+ // "serve-doc-preview": "python -m http.server 8080 -d _build/html/"
+ // }
+
+ // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
+ // "remoteUser": "root"
+}
diff --git a/.devcontainer/postCreateCommands.sh b/.devcontainer/postCreateCommands.sh
new file mode 100755
index 000000000..bc62f4925
--- /dev/null
+++ b/.devcontainer/postCreateCommands.sh
@@ -0,0 +1,10 @@
+#/!bin/sh
+
+# Command to run during postCreateCommand
+# Done in script because when done via object the commands are run in parallel
+# (which isn't always desirable)
+# https://containers.dev/implementors/spec/#parallel-exec
+# https://containers.dev/implementors/json_reference/#formatting-string-vs-array-properties
+
+pip install -r requirements.txt
+make html
diff --git a/.github/workflows/preview-url.yml b/.github/workflows/preview-url.yml
new file mode 100644
index 000000000..75a37ec66
--- /dev/null
+++ b/.github/workflows/preview-url.yml
@@ -0,0 +1,23 @@
+name: Add preview URL to PR description
+on:
+ pull_request_target:
+ types: [opened]
+ paths:
+ - '**.md'
+ - '**.png'
+ - '**.rst'
+ - '**.svg'
+
+jobs:
+ build:
+ runs-on: ubuntu-22.04
+ steps:
+ - name: edit-pull-request-description
+ uses: Jerome1337/comment-pull-request@v1.0.4
+
+ env:
+ GITHUB_TOKEN: ${{ github.token }}
+ with:
+ description-message: |
+
+ Preview build: https://dash-docs-platform--${{github.event.pull_request.number}}.org.readthedocs.build/en/${{github.event.pull_request.number}}/
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000..2f2a1c2b7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+*.db
+*.exe
+_build
+**/.DS_Store
+.vscode
diff --git a/.markdownlint.json b/.markdownlint.json
new file mode 100644
index 000000000..f04743b5a
--- /dev/null
+++ b/.markdownlint.json
@@ -0,0 +1,10 @@
+{
+ "default": true,
+ "MD004": { "style": "asterisk"},
+ "MD013": false,
+ "MD033": false,
+ "MD036": false,
+ "MD040": true,
+ "MD041": false,
+ "MD049": true
+}
diff --git a/Makefile b/Makefile
new file mode 100644
index 000000000..d4bb2cbb9
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,20 @@
+# Minimal makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line, and also
+# from the environment for the first two.
+SPHINXOPTS ?=
+SPHINXBUILD ?= sphinx-build
+SOURCEDIR = .
+BUILDDIR = _build
+
+# Put it first so that "make" without argument is like "make help".
+help:
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
+.PHONY: help Makefile
+
+# Catch-all target: route all unknown targets to Sphinx using the new
+# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
+%: Makefile
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
diff --git a/_static/css/footer.css b/_static/css/footer.css
new file mode 100644
index 000000000..70a4a920d
--- /dev/null
+++ b/_static/css/footer.css
@@ -0,0 +1,11 @@
+/* Make each footer item in-line so they stack horizontally instead of vertically */
+.footer-item {
+ display: inline-block;
+}
+
+/* Add a separating border line for all but the last item */
+.footer-item:not(:last-child) {
+ border-right: 1px solid var(--pst-color-text-base);
+ margin-right: .5em;
+ padding-right: .5em;
+}
diff --git a/_static/css/pydata-overrides.css b/_static/css/pydata-overrides.css
new file mode 100644
index 000000000..f2d590d9a
--- /dev/null
+++ b/_static/css/pydata-overrides.css
@@ -0,0 +1,151 @@
+/* Update theme variables based on https://pydata-sphinx-theme.readthedocs.io/en/stable/user_guide/styling.html#css-theme-variables */
+@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,300;0,400;0,600;0,900;1,900&family=Open+Sans:ital,wght@0,400;0,500;1,400&display=swap');
+
+:root {
+ --dash-blue: #008de4;
+ --dash-deep-blue: #012060;
+ --dash-midnight-blue: #0b0f3b;
+}
+
+html[data-theme="light"] {
+ --pst-color-primary:var(--dash-blue);
+ --pst-color-link:var(--pst-color-primary);
+ --pst-color-link-hover:var(--dash-deep-blue);
+}
+
+html[data-theme="dark"] {
+ --pst-color-primary:var(--dash-blue);
+ --pst-color-link:var(--pst-color-primary);
+}
+
+html {
+ /* Headers */
+ --pst-font-size-h1: 28px;
+ --pst-font-size-h2: 24px;
+ --pst-font-size-h3: 20px;
+
+ /* Sidebar styles */
+ --pst-sidebar-font-size: 0.95em;
+ --pst-sidebar-header-font-size: 1.2em;
+}
+
+html[data-theme=dark] .bd-content img:not(.only-dark):not(.dark-light) {
+ background: none;
+ border-radius: none;
+}
+
+h1,h2,h3,h4,h5,h6{
+ font-family: 'Montserrat', sans-serif;
+ font-weight: 600;
+}
+
+p, a, li, ol {
+ font-family: 'Open Sans', sans-serif;
+}
+
+p {
+ font-size: 0.95em;
+ line-height: 1.5;
+}
+
+.sidebar-end-items__item {
+ position: relative;
+}
+
+select {
+ width: 100%;
+ padding: 10px;
+ appearance: none;
+ background: transparent;
+ border-radius: 0.25rem;
+}
+
+html[data-theme=dark] select {
+ color: #fff;
+}
+
+html[data-theme="light"] select{
+ color: #000;
+}
+
+html[data-theme="light"] {
+ --table-bg-color-odd: #eeeeee;
+ --table-bg-color-even: #ffffff;
+}
+
+tbody tr:nth-child(odd) { background-color: var(--table-bg-color-odd); }
+tbody tr:nth-child(even) { background-color: var(--table-bg-color-even); }
+
+.table thead th.head {
+ vertical-align: middle;
+}
+
+/* These are hacks to hide the pydata-theme search popup behind the readthedocs
+sphinx search extension interface.
+*/
+.search-button__wrapper.show .search-button__search-container,
+.search-button__wrapper.show .search-button__overlay {
+ z-index: 1;
+}
+
+.search-button__wrapper.show .search-button__overlay {
+ display: none;
+}
+
+/* Make sure it doesn't stick out on the sides of the RtD search screen */
+.search-button__wrapper.show .search-button__search-container {
+ width: 15%;
+}
+
+/* Handle actual styling of the RtD search extension's screen */
+.search__outer {
+ background-color: var(--pst-color-on-background);
+ border: var(--pst-color-border);
+ border-radius: 0.25em;
+}
+
+.search__outer__input {
+ background-color: var(--pst-color-on-background);
+ color: var(--pst-color-text-base);
+ font-size: var(--pst-font-size-icon);
+}
+
+.rtd__search__credits {
+ background-color: var(--pst-color-background);
+ color: var(--pst-color-text-muted);
+}
+
+.rtd__search__credits a {
+ color: var(--pst-color-link);
+}
+
+.search__result__content, .search__result__subheading, .search__error__box {
+ color: var(--pst-color-text-base);
+}
+
+.search__result__subheading span {
+ border-bottom-color: var(--pst-color-text-base);
+}
+
+[data-theme="dark"] .search__outer .search__result__content span,
+[data-theme="dark"] .search__outer .search__result__title span {
+ background-color: var(--pst-color-muted-highlight); /* Dark mode background color */
+}
+
+.search__outer .search__result__content span,
+.search__outer .search__result__title span {
+ border-bottom-color: var(--pst-color-text-base);
+}
+
+/* Make sure "X" remains visible */
+.search__cross__img {
+ fill: var(--pst-color-text-base);
+}
+
+/* Prevent hover from actually changing the color by setting it to what it
+ already is */
+.outer_div_page_results:hover, .search__result__box .active {
+ background-color: var(--pst-color-on-background);
+}
+
+/* End of styling of the RtD search extension's screen */
diff --git a/_static/img/favicon-144x144.png b/_static/img/favicon-144x144.png
new file mode 100644
index 000000000..5a92e49f8
Binary files /dev/null and b/_static/img/favicon-144x144.png differ
diff --git a/_static/img/favicon-16x16.png b/_static/img/favicon-16x16.png
new file mode 100644
index 000000000..28332377a
Binary files /dev/null and b/_static/img/favicon-16x16.png differ
diff --git a/_static/img/favicon-32x32.png b/_static/img/favicon-32x32.png
new file mode 100644
index 000000000..3f4d052c3
Binary files /dev/null and b/_static/img/favicon-32x32.png differ
diff --git a/_static/img/favicon-96x96.png b/_static/img/favicon-96x96.png
new file mode 100644
index 000000000..4681cfb34
Binary files /dev/null and b/_static/img/favicon-96x96.png differ
diff --git a/_static/js/pydata-search-close.js b/_static/js/pydata-search-close.js
new file mode 100644
index 000000000..b7147eaff
--- /dev/null
+++ b/_static/js/pydata-search-close.js
@@ -0,0 +1,82 @@
+// Script to allow use of readthedocs-sphinx-search extension with the pydata
+// theme
+//
+// Based in part on:
+// https://github.com/pydata/pydata-sphinx-theme/blob/v0.13.3/src/pydata_sphinx_theme/assets/scripts/pydata-sphinx-theme.js#L167-L272
+
+/*******************************************************************************
+ * Search
+ */
+/** Find any search forms on the page and return their input element */
+var findSearchInput = () => {
+ let forms = document.querySelectorAll("form.bd-search");
+ if (!forms.length) {
+ // no search form found
+ return;
+ } else {
+ var form;
+ if (forms.length == 1) {
+ // there is exactly one search form (persistent or hidden)
+ form = forms[0];
+ } else {
+ // must be at least one persistent form, use the first persistent one
+ form = document.querySelector(
+ "div:not(.search-button__search-container) > form.bd-search"
+ );
+ }
+ return form.querySelector("input");
+ }
+};
+
+/** Function to hide the search field */
+var hideSearchField = () => {
+
+ let input = findSearchInput();
+ let searchPopupWrapper = document.querySelector(".search-button__wrapper");
+ let hiddenInput = searchPopupWrapper.querySelector("input");
+
+ if (input === hiddenInput) {
+ searchPopupWrapper.classList.remove("show");
+ }
+
+ if (document.activeElement === input) {
+ input.blur();
+ }
+};
+
+/** Add an event listener for hideSearchField() for Escape*/
+var addEventListenerForSearchKeyboard = () => {
+ window.addEventListener(
+ "keydown",
+ (event) => {
+ // Allow Escape key to hide the search field
+ if (event.code == "Escape") {
+ hideSearchField();
+ }
+ },
+ true
+ );
+};
+
+/** Activate callbacks for search button popup */
+var setupSearchButtons = () => {
+ addEventListenerForSearchKeyboard();
+};
+
+// Custom code to manage closing the RtD search dialog properly
+$(document).ready(function(){
+ $(".search__cross").click(function(){
+ hideSearchField();
+ });
+ $(".search__outer__wrapper.search__backdrop").click(function(){
+ hideSearchField();
+ });
+ $(".search-button__overlay").click(function(){
+ // Shouldn't be necessary since it's currently hidden by CSS, but just in
+ // case
+ console.log("Close by search-button__overlay");
+ hideSearchField();
+ });
+});
+
+$(setupSearchButtons);
diff --git a/_templates/sidebar-main.html b/_templates/sidebar-main.html
new file mode 100644
index 000000000..5bda0fbc6
--- /dev/null
+++ b/_templates/sidebar-main.html
@@ -0,0 +1,563 @@
+
\ No newline at end of file
diff --git a/conf.py b/conf.py
new file mode 100644
index 000000000..88368e05f
--- /dev/null
+++ b/conf.py
@@ -0,0 +1,137 @@
+# Configuration file for the Sphinx documentation builder.
+#
+# For the full list of built-in configuration values, see the documentation:
+# https://www.sphinx-doc.org/en/master/usage/configuration.html
+
+# -- Project information -----------------------------------------------------
+# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
+
+project = 'Dash Platform'
+copyright = '2023, Dash Core Group, Inc'
+author = 'thephez'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = u'latest'
+# The full version, including alpha/beta/rc tags.
+release = u'latest'
+
+# -- General configuration ---------------------------------------------------
+# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
+
+extensions = [
+ 'hoverxref.extension',
+ 'myst_parser',
+ 'sphinx.ext.autodoc',
+ 'sphinx_copybutton',
+ 'sphinx_design',
+ 'sphinx_search.extension',
+ 'sphinx.ext.intersphinx',
+]
+
+templates_path = ['_templates']
+exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', 'README.md', '.devcontainer', 'scripts', 'img/dev/gifs/README.md', 'docs/other']
+
+# The master toctree document.
+master_doc = 'index'
+
+hoverxref_role_types = {
+ 'hoverxref': 'tooltip',
+}
+
+# -- Myst parser configuration -----------------------------------------------
+# Auto-generate header anchors for md headings
+myst_heading_anchors = 5
+
+# Enable colon_fence for better markdown compatibility
+# https://myst.tools/docs/mystjs/syntax-overview#directives
+myst_enable_extensions = ["colon_fence"]
+
+# -- intersphinx configuration -----------------------------------------------
+intersphinx_mapping = {
+ "user": ("https://docs.dash.org/en/stable/", None),
+ "core": ("https://docs.dash.org/projects/core/en/stable/", None),
+}
+
+# We recommend adding the following config value.
+# Sphinx defaults to automatically resolve *unresolved* labels using all your Intersphinx mappings.
+# This behavior has unintended side-effects, namely that documentations local references can
+# suddenly resolve to an external location.
+# See also:
+# https://www.sphinx-doc.org/en/master/usage/extensions/intersphinx.html#confval-intersphinx_disabled_reftypes
+intersphinx_disabled_reftypes = ["*"]
+
+# -- Options for HTML output -------------------------------------------------
+# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
+
+html_theme = "pydata_sphinx_theme"
+html_static_path = ['_static']
+html_logo = 'img/dash_logo.png'
+html_css_files = [
+ 'css/footer.css',
+ 'css/pydata-overrides.css',
+]
+
+# Custom sidebar templates, must be a dictionary that maps document names
+# to template names.
+#
+html_sidebars = {
+ "index": ["sidebar-main.html"],
+ "**": ["sidebar-nav-bs"]
+}
+
+html_theme_options = {
+# "announcement": "Test build of Dash Core documentation migrated from Readme.io!",
+ "external_links": [
+ {"name": "Core docs", "url": "https://docs.dash.org/projects/core/en/stable/docs/index.html"},
+ {"name": "User docs", "url": "https://docs.dash.org/"},
+ {"name": "Dash.org", "url": "https://www.dash.org"},
+ {"name": "Forum", "url": "https://www.dash.org/forum"},
+ ],
+ "use_edit_page_button": True,
+ "github_url": "https://github.com/dashpay/docs-platform",
+ "show_toc_level": 2,
+ "show_nav_level": 1,
+ "favicons": [
+ {
+ "rel": "icon",
+ "sizes": "16x16",
+ "href": "img/favicon-16x16.png",
+ },
+ {
+ "rel": "icon",
+ "sizes": "32x32",
+ "href": "img/favicon-32x32.png",
+ },
+ {
+ "rel": "icon",
+ "sizes": "96x96",
+ "href": "img/favicon-96x96.png",
+ },
+ {
+ "rel": "icon",
+ "sizes": "144x144",
+ "href": "img/favicon-144x144.png",
+ },
+ ],
+# "navbar_start": ["navbar-logo", "languages"],
+# "navbar_center": ["languages", "navbar-nav", "languages"],
+# "navbar_end": ["navbar-icon-links", "version"],
+# "secondary_sidebar_items": ["languages", "page-toc", "edit-this-page", "sourcelink"],
+# "footer_items": ["languages", "copyright", "sphinx-version", "theme-version"],
+# "primary_sidebar_end": ["languages"],
+}
+
+html_context = {
+ # "github_url": "https://github.com", # or your GitHub Enterprise site
+ "github_user": "dashpay",
+ "github_repo": "docs-platform",
+ "github_version": "0.24.0",
+ "doc_path": "",
+}
+
+def setup(app):
+ app.add_js_file('js/pydata-search-close.js')
diff --git a/docs/dapi-client-js/overview.md b/docs/dapi-client-js/overview.md
new file mode 100644
index 000000000..e30895b85
--- /dev/null
+++ b/docs/dapi-client-js/overview.md
@@ -0,0 +1,43 @@
+```{eval-rst}
+.. _dapi-client-js-index:
+```
+
+# Overview
+
+## DAPI-Client
+
+[](https://www.npmjs.com/package/@dashevo/dapi-client)
+[](https://github.com/dashevo/js-dapi-client/actions/workflows/test_and_release.yml)
+[](https://github.com/dashpay/platform/releases/latest)
+[](https://github.com/RichardLitt/standard-readme)
+
+Client library used to access Dash DAPI endpoints
+
+This library enables HTTP-based interaction with the Dash blockchain and Dash Platform via the decentralized API ([DAPI](https://github.com/dashpay/platform/tree/master/packages/dapi)) hosted on Dash masternodes.
+
+- `DAPI-Client` provides automatic server (masternode) discovery using either a default seed node or a user-supplied one
+- `DAPI-Client` maps to DAPI's [RPC](https://github.com/dashpay/platform/tree/master/packages/dapi/lib/rpcServer/commands) and [gRPC](https://github.com/dashpay/platform/tree/master/packages/dapi/lib/grpcServer/handlers) endpoints
+
+### Install
+
+### ES5/ES6 via NPM
+
+In order to use this library in Node, you will need to add it to your project as a dependency.
+
+Having [NodeJS](https://nodejs.org/) installed, just type in your terminal :
+
+```sh
+npm install @dashevo/dapi-client
+```
+
+### CDN Standalone
+
+For browser usage, you can also directly rely on unpkg :
+
+```
+
+```
+
+## Licence
+
+[MIT](https://github.com/dashevo/dapi-client/blob/master/LICENCE.md) © Dash Core Group, Inc.
\ No newline at end of file
diff --git a/docs/dapi-client-js/quick-start.md b/docs/dapi-client-js/quick-start.md
new file mode 100644
index 000000000..411e04d37
--- /dev/null
+++ b/docs/dapi-client-js/quick-start.md
@@ -0,0 +1,37 @@
+# Quick start
+
+## ES5/ES6 via NPM
+
+In order to use this library in Node, you will need to add it to your project as a dependency.
+
+Having [NodeJS](https://nodejs.org/) installed, just type in your terminal :
+
+```sh
+npm install @dashevo/dapi-client
+```
+
+## CDN Standalone
+
+For browser usage, you can also directly rely on unpkg :
+
+```
+
+```
+
+You can see an [example usage here](https://github.com/dashpay/platform/blob/master/packages/js-dapi-client/examples/web/web.usage.html) .
+
+## Initialization
+
+```js
+const DAPIClient = require('@dashevo/dapi-client');
+const client = new DAPIClient();
+
+(async () => {
+ const bestBlockHash = await client.core.getBestBlockHash();
+ console.log(bestBlockHash);
+})();
+```
+
+## Quicknotes
+
+This package allows you to fetch & send information from both the payment chain (layer 1) and the application chain (layer 2, a.k.a Platform chain).
\ No newline at end of file
diff --git a/docs/dapi-client-js/usage/core/broadcasttransaction.md b/docs/dapi-client-js/usage/core/broadcasttransaction.md
new file mode 100644
index 000000000..2dd20c4c0
--- /dev/null
+++ b/docs/dapi-client-js/usage/core/broadcasttransaction.md
@@ -0,0 +1,17 @@
+# broadcasttransaction
+
+**Usage**: `await client.core.broadcastTransaction(transaction)`
+**Description**: Allow to broadcast a valid **signed** transaction to the network.
+
+Parameters:
+
+| parameters | type | required | Description |
+| ------------------------- | ------- | ---------- | ---------------------------------------------------------------------------------------------------------------- |
+| **transaction** | Buffer | yes | A valid Buffer representation of a transaction |
+| **options** | Object | | |
+| **options.allowHighFees** | Boolean | no[=false] | As safety measure, "absurd" fees are rejected when considered to high. This allow to overwrite that comportement |
+| **options.bypassLimits** | Boolean | no[=false] | Allow to bypass default transaction policy rules limitation |
+
+Returns : transactionId (string).
+
+N.B : The TransactionID provided is subject to [transaction malleability](https://docs.dash.org/projects/core/en/stable/docs/guide/transactions-transaction-malleability.html), and is not a source of truth (the transaction might be included in a block with a different txid).
\ No newline at end of file
diff --git a/docs/dapi-client-js/usage/core/core.md b/docs/dapi-client-js/usage/core/core.md
new file mode 100644
index 000000000..bb7ffee96
--- /dev/null
+++ b/docs/dapi-client-js/usage/core/core.md
@@ -0,0 +1,18 @@
+# Core
+
+```{toctree}
+:maxdepth: 2
+:titlesonly:
+
+
+broadcasttransaction
+generatetoaddress
+getbestblockhash
+getblockbyhash
+getblockbyheight
+getblockhash
+getmnlistdiff
+getstatus
+gettransaction
+subscribetotransactionswithproofs
+```
diff --git a/docs/dapi-client-js/usage/core/generatetoaddress.md b/docs/dapi-client-js/usage/core/generatetoaddress.md
new file mode 100644
index 000000000..5e94781d5
--- /dev/null
+++ b/docs/dapi-client-js/usage/core/generatetoaddress.md
@@ -0,0 +1,15 @@
+# generatetoaddress
+
+**Usage**: `await client.core.generateToAddress(blockMumber, address, options)`
+**Description**: Allow to broadcast a valid **signed** transaction to the network.
+**Notes**: Will only works on regtest.
+
+Parameters:
+
+| parameters | type | required | Description |
+| ---------------- | ----------------- | -------- | --------------------------------------------------------- |
+| **blocksNumber** | Number | yes | A number of block to see generated on the regtest network |
+| **address** | String | yes | The address that will receive the newly generated Dash |
+| **options** | DAPIClientOptions | no | |
+
+Returns : {Promise\} - a set of generated blockhashes.
\ No newline at end of file
diff --git a/docs/dapi-client-js/usage/core/getbestblockhash.md b/docs/dapi-client-js/usage/core/getbestblockhash.md
new file mode 100644
index 000000000..7964a4203
--- /dev/null
+++ b/docs/dapi-client-js/usage/core/getbestblockhash.md
@@ -0,0 +1,12 @@
+# getbestblockhash
+
+**Usage**: `await client.core.getBestBlockHash(options)`
+**Description**: Allow to fetch the best (highest/latest block hash) from the network
+
+Parameters:
+
+| parameters | type | required | Description |
+| ----------- | ----------------- | -------- | ----------- |
+| **options** | DAPIClientOptions | no | |
+
+Returns : {Promise} - The best block hash
\ No newline at end of file
diff --git a/docs/dapi-client-js/usage/core/getblockbyhash.md b/docs/dapi-client-js/usage/core/getblockbyhash.md
new file mode 100644
index 000000000..949f1f329
--- /dev/null
+++ b/docs/dapi-client-js/usage/core/getblockbyhash.md
@@ -0,0 +1,13 @@
+# getblockbyhash
+
+**Usage**: `await client.core.getBlockByHash(hash, options)`
+**Description**: Allow to fetch a specific block by its hash
+
+Parameters:
+
+| parameters | type | required | Description |
+| ----------- | ----------------- | -------- | ------------------ |
+| **hash** | String | yes | A valid block hash |
+| **options** | DAPIClientOptions | no | |
+
+Returns : {Promise\} - The specified bufferized block
\ No newline at end of file
diff --git a/docs/dapi-client-js/usage/core/getblockbyheight.md b/docs/dapi-client-js/usage/core/getblockbyheight.md
new file mode 100644
index 000000000..f73d9ce8a
--- /dev/null
+++ b/docs/dapi-client-js/usage/core/getblockbyheight.md
@@ -0,0 +1,13 @@
+# getblockbyheight
+
+**Usage**: `await client.core.getBlockByHeight(height, options)`
+**Description**: Allow to fetch a specific block by its height
+
+Parameters:
+
+| parameters | type | required | Description |
+| ----------- | ----------------- | -------- | -------------------- |
+| **height** | Number | yes | A valid block height |
+| **options** | DAPIClientOptions | no | |
+
+Returns : {Promise\} - The specified bufferized block
\ No newline at end of file
diff --git a/docs/dapi-client-js/usage/core/getblockhash.md b/docs/dapi-client-js/usage/core/getblockhash.md
new file mode 100644
index 000000000..e9aa91d47
--- /dev/null
+++ b/docs/dapi-client-js/usage/core/getblockhash.md
@@ -0,0 +1,13 @@
+# getblockhash
+
+**Usage**: `await client.core.getBlockHash(height, options)`
+**Description**: Allow to fetch a specific block hash from its height
+
+Parameters:
+
+| parameters | type | required | Description |
+| ----------- | ----------------- | -------- | -------------------- |
+| **height** | Number | yes | A valid block height |
+| **options** | DAPIClientOptions | no | |
+
+Returns : {Promise\} - the corresponding block hash
\ No newline at end of file
diff --git a/docs/dapi-client-js/usage/core/getmnlistdiff.md b/docs/dapi-client-js/usage/core/getmnlistdiff.md
new file mode 100644
index 000000000..f6282e1e6
--- /dev/null
+++ b/docs/dapi-client-js/usage/core/getmnlistdiff.md
@@ -0,0 +1,14 @@
+# getmnlistdiff
+
+**Usage**: `await client.core.getMnListDiff(baseBlockHash, blockHash, options)`
+**Description**: Allow to fetch a specific block hash from its height
+
+Parameters:
+
+| parameters | type | required | Description |
+| ----------------- | ----------------- | -------- | ----------------------------- |
+| **baseBlockHash** | String | yes | hash or height of start block |
+| **blockHash** | String | yes | hash or height of end block |
+| **options** | DAPIClientOptions | no | |
+
+Returns : {Promise