From 83eafcd3a8ff274c87f133caaa574301d982eb10 Mon Sep 17 00:00:00 2001 From: smk762 Date: Tue, 14 Mar 2023 20:53:55 +0800 Subject: [PATCH 1/5] add basic methods --- .../lightning_channels_close_channel.md | 11 +++++++ .../lightning_channels_get_channel_details.md | 10 ++++++ ...ghtning_channels_get_claimable_balances.md | 10 ++++++ ...channels_list_closed_channels_by_filter.md | 29 +++++++++++++++++ ...g_channels_list_open_channels_by_filter.md | 32 +++++++++++++++++++ .../lightning_channels_open_channel.md | 30 +++++++++++++++++ .../lightning_channels_update_channel.md | 17 ++++++++++ .../lightning_nodes_add_trusted_node.md | 10 ++++++ .../lightning_nodes_connect_to_node.md | 10 ++++++ .../lightning_nodes_list_trusted_nodes.md | 9 ++++++ .../lightning_nodes_remove_trusted_node.md | 10 ++++++ .../lightning_payments_generate_invoice.md | 12 +++++++ .../lightning_payments_get_payment_details.md | 10 ++++++ ...htning_payments_list_payments_by_filter.md | 30 +++++++++++++++++ .../lightning_payments_send_payment.md | 16 ++++++++++ .../task_enable_lightning_cancel.md | 9 ++++++ .../task_enable_lightning_init.md | 16 ++++++++++ .../task_enable_lightning_status.md | 10 ++++++ 18 files changed, 281 insertions(+) create mode 100644 docs/basic-docs/atomicdex-api-20-dev/lightning_channels_close_channel.md create mode 100644 docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_channel_details.md create mode 100644 docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_claimable_balances.md create mode 100644 docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_closed_channels_by_filter.md create mode 100644 docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_open_channels_by_filter.md create mode 100644 docs/basic-docs/atomicdex-api-20-dev/lightning_channels_open_channel.md create mode 100644 docs/basic-docs/atomicdex-api-20-dev/lightning_channels_update_channel.md create mode 100644 docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_add_trusted_node.md create mode 100644 docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_connect_to_node.md create mode 100644 docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_list_trusted_nodes.md create mode 100644 docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_remove_trusted_node.md create mode 100644 docs/basic-docs/atomicdex-api-20-dev/lightning_payments_generate_invoice.md create mode 100644 docs/basic-docs/atomicdex-api-20-dev/lightning_payments_get_payment_details.md create mode 100644 docs/basic-docs/atomicdex-api-20-dev/lightning_payments_list_payments_by_filter.md create mode 100644 docs/basic-docs/atomicdex-api-20-dev/lightning_payments_send_payment.md create mode 100644 docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_cancel.md create mode 100644 docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_init.md create mode 100644 docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_status.md diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_close_channel.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_close_channel.md new file mode 100644 index 000000000..5a8cd8cac --- /dev/null +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_close_channel.md @@ -0,0 +1,11 @@ +{ + "userpass": "{{userpass}}", + "mmrpc": "2.0", + "method": "lightning::channels::close_channel", + "params": { + "coin": "tBTC-TEST-lightning", + "rpc_channel_id": 1 + // "force_close": false + } + // "id": null // Accepted values: Integers +} \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_channel_details.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_channel_details.md new file mode 100644 index 000000000..685708a71 --- /dev/null +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_channel_details.md @@ -0,0 +1,10 @@ +{ + "userpass": "userpass", + "mmrpc": "2.0", + "method": "lightning::channels::get_channel_details", + "params": { + "coin": "tBTC-TEST-lightning", + "rpc_channel_id": 1 + } + "id": 54 +} \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_claimable_balances.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_claimable_balances.md new file mode 100644 index 000000000..6ef8bbe4e --- /dev/null +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_claimable_balances.md @@ -0,0 +1,10 @@ +{ + "userpass": "userpass", + "mmrpc": "2.0", + "method": "lightning::channels::get_claimable_balances", + "params": { + "coin": "tBTC-TEST-lightning" + "include_open_channels_balances": false + } + "id": 762 +} \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_closed_channels_by_filter.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_closed_channels_by_filter.md new file mode 100644 index 000000000..9ceb49192 --- /dev/null +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_closed_channels_by_filter.md @@ -0,0 +1,29 @@ +{ + "userpass": "userpass", + "mmrpc": "2.0", + "method": "lightning::channels::list_closed_channels_by_filter", + "params": { + "coin": "tBTC-TEST-lightning" + // "filter": null, + // // "filter": { + // // // "channel_id": null, // Accepted values: Strings + // // // "counterparty_node_id": null, // Accepted values: Strings + // // // "funding_tx": null, // Accepted values: Strings + // // // "from_funding_value": null, // Accepted values: Integers + // // // "to_funding_value": null, // Accepted values: Integers + // // // "closing_tx": null, // Accepted values: Strings + // // // "closure_reason": null, // Accepted values: Strings + // // // "claiming_tx": null, // Accepted values: Strings + // // // "from_claimed_balance": null, // Accepted values: Decimals + // // // "to_claimed_balance": null, // Accepted values: Decimals + // // // "channel_type": null, // Accepted values: "Outbound", "Inbound" + // // // "channel_visibility": null // Accepted values: "Public", "Private" + // // }, + // "limit": 10, + // "paging_options": { + // "PageNumber": 1 + // // "FromId": 4 // used instead of: "PageNumber" + // } + } + "id": 55 +} \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_open_channels_by_filter.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_open_channels_by_filter.md new file mode 100644 index 000000000..30ae88e20 --- /dev/null +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_open_channels_by_filter.md @@ -0,0 +1,32 @@ +{ + "userpass": "userpass", + "mmrpc": "2.0", + "method": "lightning::channels::list_open_channels_by_filter", + "params": { + "coin": "tBTC-TEST-lightning" + // "filter": null, + // // "filter": { + // // // "channel_id": null, // Accepted values: Strings + // // // "counterparty_node_id": null, // Accepted values: Strings + // // // "funding_tx": null, // Accepted values: Strings + // // // "from_funding_value_sats": null, // Accepted values: Integers + // // // "to_funding_value_sats": null, // Accepted values: Integers + // // // "is_outbound": null, // Accepted values: Booleans + // // // "from_balance_msat": null, // Accepted values: Integers + // // // "to_balance_msat": null, // Accepted values: Integers + // // // "from_outbound_capacity_msat": null, // Accepted values: Integers + // // // "to_outbound_capacity_msat": null, // Accepted values: Integers + // // // "from_inbound_capacity_msat": null, // Accepted values: Integers + // // // "to_inbound_capacity_msat": null, // Accepted values: Integers + // // // "confirmed": null, // Accepted values: Booleans + // // // "is_usable": null, // Accepted values: Booleans + // // // "is_public": null // Accepted values: Booleans + // // }, + // "limit": 10, + // "paging_options": { + // "PageNumber": 1 + // // "FromId": 4 // used instead of: "PageNumber" + // } + } + "id": 45 +} \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_open_channel.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_open_channel.md new file mode 100644 index 000000000..56cfb0dd0 --- /dev/null +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_open_channel.md @@ -0,0 +1,30 @@ +{ + "userpass": "{{userpass}}", + "mmrpc": "2.0", + "method": "lightning::channels::open_channel", + "params": { + "coin": "tBTC-TEST-lightning", + "node_address": "038863cf8ab91046230f561cd5b386cbff8309fa02e3f0c3ed161a3aeb64a643b9@203.132.94.196:9735", + "amount": { + "type": "Exact", // Accepted values: "Exact", "Max" + "value": 0.004 // Required only if: "type": "Exact" + } + // "push_msat": 0, + // "channel_options": { + // // "proportional_fee_in_millionths_sats": 0, // Default: Coin Config + // // "base_fee_msat": 1000, // Default: Coin Config + // // "cltv_expiry_delta": 72, // Default: Coin Config + // // "max_dust_htlc_exposure_msat": 5000000, // Default: Coin Config + // // "force_close_avoidance_max_fee_satoshis": 1000 // Default: Coin Config + // }, + // "channel_configs" : { + // // "counterparty_locktime": 144, // Default: Coin Config + // // "our_htlc_minimum_msat": 1, // Default: Coin Config + // // "negotiate_scid_privacy": false, // Default: Coin Config + // // "max_inbound_in_flight_htlc_percent": 10, // Default: Coin Config + // // "announced_channel": false, // Default: Coin Config + // // "commit_upfront_shutdown_pubkey": true // Default: Coin Config + // } + } + // "id": null // Accepted values: Integers +} \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_update_channel.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_update_channel.md new file mode 100644 index 000000000..06fb97d6d --- /dev/null +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_update_channel.md @@ -0,0 +1,17 @@ +{ + "userpass": "{{userpass}}", + "mmrpc": "2.0", + "method": "lightning::channels::update_channel", + "params": { + "coin": "tBTC-TEST-lightning", + "rpc_channel_id": 1, + "channel_options": { + // "proportional_fee_in_millionths_sats": 0, // Default: Coin Config + // "base_fee_msat": 1000, // Default: Coin Config + // "cltv_expiry_delta": 72, // Default: Coin Config + // "max_dust_htlc_exposure_msat": 5000000, // Default: Coin Config + // "force_close_avoidance_max_fee_satoshis": 1000 // Default: Coin Config + } + } + // "id": null // Accepted values: Integers +} \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_add_trusted_node.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_add_trusted_node.md new file mode 100644 index 000000000..083962294 --- /dev/null +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_add_trusted_node.md @@ -0,0 +1,10 @@ +{ + "userpass": "userpass", + "mmrpc": "2.0", + "method": "lightning::nodes::add_trusted_node", + "params": { + "coin": "tBTC-TEST-lightning", + "node_id": "038863cf8ab91046230f561cd5b386cbff8309fa02e3f0c3ed161a3aeb64a643b9" + } + "id": 565 +} \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_connect_to_node.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_connect_to_node.md new file mode 100644 index 000000000..e05f755d4 --- /dev/null +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_connect_to_node.md @@ -0,0 +1,10 @@ +{ + "userpass": "{{userpass}}", + "mmrpc": "2.0", + "method": "lightning::nodes::connect_to_node", + "params": { + "coin": "tBTC-TEST-lightning", + "node_address": "038863cf8ab91046230f561cd5b386cbff8309fa02e3f0c3ed161a3aeb64a643b9@203.132.94.196:9735" + } + // "id": null // Accepted values: Integers +} \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_list_trusted_nodes.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_list_trusted_nodes.md new file mode 100644 index 000000000..f3d729420 --- /dev/null +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_list_trusted_nodes.md @@ -0,0 +1,9 @@ +{ + "userpass": "{{userpass}}", + "mmrpc": "2.0", + "method": "lightning::nodes::list_trusted_nodes", + "params": { + "coin": "tBTC-TEST-lightning" + } + // "id": null // Accepted values: Integers +} \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_remove_trusted_node.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_remove_trusted_node.md new file mode 100644 index 000000000..3eb259717 --- /dev/null +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_remove_trusted_node.md @@ -0,0 +1,10 @@ +{ + "userpass": "{{userpass}}", + "mmrpc": "2.0", + "method": "lightning::nodes::remove_trusted_node", + "params": { + "coin": "tBTC-TEST-lightning", + "node_id": "038863cf8ab91046230f561cd5b386cbff8309fa02e3f0c3ed161a3aeb64a643b9" + } + // "id": null // Accepted values: Integers +} \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_generate_invoice.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_generate_invoice.md new file mode 100644 index 000000000..4b08041d4 --- /dev/null +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_generate_invoice.md @@ -0,0 +1,12 @@ +{ + "userpass": "userpass", + "mmrpc": "2.0", + "method": "lightning::payments::generate_invoice", + "params": { + "coin": "tBTC-TEST-lightning", + "description": "test invoice" + // "amount_in_msat": null, // Accepted values: Integers + // "expiry": null // Accepted values: Integers + } + "id": 56 +} \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_get_payment_details.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_get_payment_details.md new file mode 100644 index 000000000..de54841a3 --- /dev/null +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_get_payment_details.md @@ -0,0 +1,10 @@ +{ + "userpass": "{{userpass}}", + "mmrpc": "2.0", + "method": "lightning::payments::get_payment_details", + "params": { + "coin": "tBTC-TEST-lightning", + "payment_hash": "32f996e6e0aa88e567318beeadb37b6bc0fddfd3660d4a87726f308ed1ec7b33" + } + // "id": null // Accepted values: Integers +} \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_list_payments_by_filter.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_list_payments_by_filter.md new file mode 100644 index 000000000..60c82e68c --- /dev/null +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_list_payments_by_filter.md @@ -0,0 +1,30 @@ +{ + "userpass": "{{userpass}}", + "mmrpc": "2.0", + "method": "lightning::payments::list_payments_by_filter", + "params": { + "coin": "tBTC-TEST-lightning" + // "filter": null, + // // "filter": { + // // // "payment_type": null, + // // // // "payment_type": { + // // // // "type": "Outbound Payment", // Accepted values: "Outbound Payment", "Inbound Payment" + // // // // "destination": "03933884aaf1d6b108397e5efe5c86bcf2d8ca8d2f700eda99db9214fc2712b134" // Required only if: "type": "Outbound Payment" + // // // // }, + // // // "description": null, // Accepted values: Strings + // // // "status": null, // Accepted values: "pending", "succeeded", "failed" + // // // "from_amount_msat": null, // Accepted values: Integers + // // // "to_amount_msat": null, // Accepted values: Integers + // // // "from_fee_paid_msat": null, // Accepted values: Integers + // // // "to_fee_paid_msat": null, // Accepted values: Integers + // // // "from_timestamp": null, // Accepted values: Integers + // // // "to_timestamp": null // Accepted values: Integers + // // }, + // "limit": 10, + // "paging_options": { + // "PageNumber": 1 + // // "FromId": "d6d3cf3fd5237ed15295847befe00da67c043da1c39a373bff30bd22442eea43" // used instead of: "PageNumber" + // } + } + // "id": null // Accepted values: Integers +} \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_send_payment.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_send_payment.md new file mode 100644 index 000000000..d65bea828 --- /dev/null +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_send_payment.md @@ -0,0 +1,16 @@ +{ + "userpass": "{{userpass}}", + "mmrpc": "2.0", + "method": "lightning::payments::send_payment", + "params": { + "coin": "tBTC-TEST-lightning", + "payment": { + "type": "invoice", // Accepted values: "invoice", "keysend" + "invoice": "lntb20u1p32wwxapp5p8gjy2e79jku5tshhq2nkdauv0malqqhzefnqmx9pjwa8h83cmwqdp8xys9xcmpd3sjqsmgd9czq3njv9c8qatrvd5kumcxqrrsscqp79qy9qsqsp5m473qknpecv6ajmwwtjw7keggrwxerymehx6723avhdrlnxmuvhs54zmyrumkasvjp0fvvk2np30cx5xpjs329alvm60rwy3payrnkmsd3n8ahnky3kuxaraa3u4k453yf3age7cszdxhjxjkennpt75erqpsfmy4y" // Required only if: "type": "invoice" + // "destination": "038863cf8ab91046230f561cd5b386cbff8309fa02e3f0c3ed161a3aeb64a643b9", // Required only if: "type": "keysend" + // "amount_in_msat": 1000, // Required only if: "type": "keysend" + // "expiry": 24 // Required only if: "type": "keysend" + } + } + // "id": null // Accepted values: Integers +} \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_cancel.md b/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_cancel.md new file mode 100644 index 000000000..7bd9d2934 --- /dev/null +++ b/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_cancel.md @@ -0,0 +1,9 @@ +{ + "userpass": "{{userpass}}", + "mmrpc": "2.0", + "method": "task::enable_lightning::cancel", + "params": { + "task_id": 0 + } + // "id": null // Accepted values: Integers +} \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_init.md b/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_init.md new file mode 100644 index 000000000..6ffdc46eb --- /dev/null +++ b/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_init.md @@ -0,0 +1,16 @@ +{ + "userpass": "{{userpass}}", + "mmrpc": "2.0", + "method": "task::enable_lightning::init", + "params": { + "ticker": "tBTC-TEST-lightning", + "activation_params": { + "name": "Mm2TestNode" + // "listening_port": 9735, + // "color": "000000", + // "payment_retries": 5, + // "backup_path": null // Accepted values: Strings + } + } + // "id": null // Accepted values: Integers +} \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_status.md b/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_status.md new file mode 100644 index 000000000..adda37405 --- /dev/null +++ b/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_status.md @@ -0,0 +1,10 @@ +{ + "userpass": "{{userpass}}", + "mmrpc": "2.0", + "method": "task::enable_lightning::status", + "params": { + "task_id": 0 + // "forget_if_finished": true + } + // "id": null // Accepted values: Integers +} \ No newline at end of file From 451027ff6bda85a63f41f2dca7f58a45158716bf Mon Sep 17 00:00:00 2001 From: smk762 Date: Wed, 15 Mar 2023 03:23:18 +0800 Subject: [PATCH 2/5] add method and init common structures --- docs/.vuepress/atomicDEX-sidebar.js | 11 ++ ...channels_list_closed_channels_by_filter.md | 100 ++++++++++++++---- .../basic-docs/atomicdex/common-structures.md | 56 ++++++++++ utils/parse_postman.py | 14 +++ 4 files changed, 160 insertions(+), 21 deletions(-) create mode 100644 docs/basic-docs/atomicdex/common-structures.md create mode 100755 utils/parse_postman.py diff --git a/docs/.vuepress/atomicDEX-sidebar.js b/docs/.vuepress/atomicDEX-sidebar.js index d6e017fa6..f60541e6d 100644 --- a/docs/.vuepress/atomicDEX-sidebar.js +++ b/docs/.vuepress/atomicDEX-sidebar.js @@ -12,6 +12,10 @@ let atomicDEXsidebar = { "/basic-docs/atomicdex/atomicdex-methods.md", "RPC Methods for AtomicDEX", ], + [ + "/basic-docs/atomicdex/common-structures.md", + "Common structure objects in AtomicDEX", + ], { title: "Setup", collapsable: true, @@ -346,6 +350,13 @@ let atomicDEXsidebar = { ["/basic-docs/atomicdex-api-20-dev/get_current_mtp.md", "get_current_mtp"] ] }, + { + title: "Lightning", + collapsable: true, + children: [ + ["/basic-docs/atomicdex-api-20-dev/lightning_channels_list_closed_channels_by_filter.md", "list_closed_channels_by_filter"] + ] + }, { title: "HD Wallet Tasks", collapsable: true, diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_closed_channels_by_filter.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_closed_channels_by_filter.md index 9ceb49192..d0af6d57f 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_closed_channels_by_filter.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_closed_channels_by_filter.md @@ -1,29 +1,87 @@ +## List closed channels by filter + +| Parameter | Type | Description | +|----------------------|---------|-------------| +| coin | string | The ticker of the coin you would like to view closed channels for | +| filter | object | [Lightning channels fliter](/basic-docs/atomicdex/common-structures.html#Lightning_channel_filter) | +| limit | string | | + { "userpass": "userpass", "mmrpc": "2.0", "method": "lightning::channels::list_closed_channels_by_filter", "params": { "coin": "tBTC-TEST-lightning" - // "filter": null, - // // "filter": { - // // // "channel_id": null, // Accepted values: Strings - // // // "counterparty_node_id": null, // Accepted values: Strings - // // // "funding_tx": null, // Accepted values: Strings - // // // "from_funding_value": null, // Accepted values: Integers - // // // "to_funding_value": null, // Accepted values: Integers - // // // "closing_tx": null, // Accepted values: Strings - // // // "closure_reason": null, // Accepted values: Strings - // // // "claiming_tx": null, // Accepted values: Strings - // // // "from_claimed_balance": null, // Accepted values: Decimals - // // // "to_claimed_balance": null, // Accepted values: Decimals - // // // "channel_type": null, // Accepted values: "Outbound", "Inbound" - // // // "channel_visibility": null // Accepted values: "Public", "Private" - // // }, - // "limit": 10, - // "paging_options": { - // "PageNumber": 1 - // // "FromId": 4 // used instead of: "PageNumber" - // } } "id": 55 -} \ No newline at end of file +} + + +{ + "userpass": "userpass", + "mmrpc": "2.0", + "method": "lightning::channels::list_closed_channels_by_filter", + "params": { + "coin": "tBTC-TEST-lightning" + "filter": { + "channel_id": null, + "counterparty_node_id": null, + "funding_tx": null, + "from_funding_value": null, + "to_funding_value": null, + "closing_tx": null, + "closure_reason": null, + "claiming_tx": null, + "from_claimed_balance": null, + "to_claimed_balance": null, + "channel_type": null, + "channel_visibility": null + }, + "limit": 10, + "paging_options": { + "PageNumber": 1 + } + } + "id": 55 +} + +{ + "userpass": "userpass", + "mmrpc": "2.0", + "method": "lightning::channels::list_closed_channels_by_filter", + "params": { + "coin": "tBTC-TEST-lightning" + "filter": { + "channel_id": null, + "counterparty_node_id": null, + "funding_tx": null, + "from_funding_value": null, + "to_funding_value": null, + "closing_tx": null, + "closure_reason": null, + "claiming_tx": null, + "from_claimed_balance": null, + "to_claimed_balance": null, + "channel_type": null, + "channel_visibility": null + }, + "limit": 10, + "paging_options": { + "FromId": 4 + } + } + "id": 55 +} + + +{ + "userpass": "userpass", + "mmrpc": "2.0", + "method": "lightning::channels::list_closed_channels_by_filter", + "params": { + "coin": "tBTC-TEST-lightning" + } + "id": 55 +} + + diff --git a/docs/basic-docs/atomicdex/common-structures.md b/docs/basic-docs/atomicdex/common-structures.md new file mode 100644 index 000000000..7b85d9d2b --- /dev/null +++ b/docs/basic-docs/atomicdex/common-structures.md @@ -0,0 +1,56 @@ +## Lightning\_channels\_filter + +| Parameter | Type | Description | +|----------------------|---------|-------------| +| channel_id | string | | +| counterparty_node_id | string | | +| funding_tx | string | | +| from_funding_value | integer | | +| to_funding_value | integer | | +| closing_tx | string | | +| closure_reason | string | | +| claiming_tx | string | | +| from_claimed_balance | decimal | | +| to_claimed_balance | decimal | | +| channel_type | string | Accepted values: "Outbound", "Inbound" | +| channel_visibility | string | Accepted values: "Public", "Private" | + + +``` +"filter": { + "channel_id": null, // Accepted values: Strings + "counterparty_node_id": null, // Accepted values: Strings + "funding_tx": null, // Accepted values: Strings + "from_funding_value": null, // Accepted values: Integers + "to_funding_value": null, // Accepted values: Integers + "closing_tx": null, // Accepted values: Strings + "closure_reason": null, // Accepted values: Strings + "claiming_tx": null, // Accepted values: Strings + "from_claimed_balance": null, // Accepted values: Decimals + "to_claimed_balance": null, // Accepted values: Decimals + "channel_type": null, // Accepted values: "Outbound", "Inbound" + "channel_visibility": null // Accepted values: "Public", "Private" +} +``` + +## Paging Options + +| Parameter | Type | Description | +|------------|---------|---------------------------------| +| PageNumber | integer | Offset for paginated results | +| FromId | integer | Ignore results priod to this Id | + +Use either value, not both. + +``` +{ + "PageNumber": 1 +} +``` + +``` +{ + "FromId": 4 +} +``` + diff --git a/utils/parse_postman.py b/utils/parse_postman.py new file mode 100755 index 000000000..205a9dfc8 --- /dev/null +++ b/utils/parse_postman.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python3 +import os +import sys +import json + +'''Use with grep to get method. In future we might be able to auto derive code samples and populate param tables''' + +with open("../postman/collections/mm2_dev.postman_collection.json", 'r') as f: + for line in f.readlines(): + l = line.strip() + if len(l) > 40: + if l.startswith('"raw": "'): + l = l.replace('"raw": "', "")[:-1].replace(r'\r\n', "").replace(r'\"', '"') + print(l) From 08ccc5d7d3c9bcc83bca019b7fea72b9818fe9a4 Mon Sep 17 00:00:00 2001 From: smk762 Date: Wed, 15 Mar 2023 05:36:45 +0800 Subject: [PATCH 3/5] add sidebar entries and some param tables --- docs/.vuepress/atomicDEX-sidebar.js | 43 +++++++- .../lightning_channels_close_channel.md | 12 ++- .../lightning_channels_get_channel_details.md | 8 ++ ...ghtning_channels_get_claimable_balances.md | 8 ++ ...channels_list_closed_channels_by_filter.md | 18 +--- ...g_channels_list_open_channels_by_filter.md | 97 ++++++++++++++----- .../lightning_channels_update_channel.md | 2 +- .../lightning_nodes_add_trusted_node.md | 10 +- .../lightning_nodes_connect_to_node.md | 9 +- .../lightning_nodes_list_trusted_nodes.md | 8 +- .../lightning_nodes_remove_trusted_node.md | 9 +- .../lightning_payments_generate_invoice.md | 25 ++++- .../lightning_payments_get_payment_details.md | 9 +- .../lightning_payments_send_payment.md | 8 ++ .../task_enable_lightning_cancel.md | 8 +- .../task_enable_lightning_init.md | 32 +++++- .../task_enable_lightning_status.md | 11 ++- .../basic-docs/atomicdex/common-structures.md | 95 +++++++++++++++--- 18 files changed, 340 insertions(+), 72 deletions(-) diff --git a/docs/.vuepress/atomicDEX-sidebar.js b/docs/.vuepress/atomicDEX-sidebar.js index f60541e6d..2c9814142 100644 --- a/docs/.vuepress/atomicDEX-sidebar.js +++ b/docs/.vuepress/atomicDEX-sidebar.js @@ -354,7 +354,48 @@ let atomicDEXsidebar = { title: "Lightning", collapsable: true, children: [ - ["/basic-docs/atomicdex-api-20-dev/lightning_channels_list_closed_channels_by_filter.md", "list_closed_channels_by_filter"] + { + title: "Enable", + collapsable: true, + children: [ + ["/basic-docs/atomicdex-api-20-dev/task_enable_lightning_init.md", "task_enable_lightning_init"], + ["/basic-docs/atomicdex-api-20-dev/task_enable_lightning_status.md", "task_enable_lightning_status"], + ["/basic-docs/atomicdex-api-20-dev/task_enable_lightning_cancel.md", "task_enable_lightning_cancel"], + ] + }, + { + title: "Channels", + collapsable: true, + children: [ + ["/basic-docs/atomicdex-api-20-dev/lightning_channels_get_channel_details.md", "get_channel_details"], + ["/basic-docs/atomicdex-api-20-dev/lightning_channels_update_channel.md", "update_channel"], + ["/basic-docs/atomicdex-api-20-dev/lightning_channels_open_channel.md", "open_channel"], + ["/basic-docs/atomicdex-api-20-dev/lightning_channels_get_claimable_balances.md", "get_claimable_balances"], + ["/basic-docs/atomicdex-api-20-dev/lightning_channels_list_closed_channels_by_filter.md", "list_closed_channels_by_filter"], + ["/basic-docs/atomicdex-api-20-dev/lightning_channels_list_open_channels_by_filter.md", "list_open_channels_by_filter"], + ["/basic-docs/atomicdex-api-20-dev/lightning_channels_close_channel.md", "close_channel"] + ] + }, + { + title: "Nodes", + collapsable: true, + children: [ + ["/basic-docs/atomicdex-api-20-dev/lightning_nodes_add_trusted_node.md", "add_trusted_node"], + ["/basic-docs/atomicdex-api-20-dev/lightning_nodes_remove_trusted_node.md", "remove_trusted_node"], + ["/basic-docs/atomicdex-api-20-dev/lightning_nodes_list_trusted_nodes.md", "list_trusted_nodes"], + ["/basic-docs/atomicdex-api-20-dev/lightning_nodes_connect_to_node.md", "connect_to_node"], + ] + }, + { + title: "Payments", + collapsable: true, + children: [ + ["/basic-docs/atomicdex-api-20-dev/lightning_payments_generate_invoice.md", "generate_invoice"], + ["/basic-docs/atomicdex-api-20-dev/lightning_payments_get_payment_details.md", "get_payments_details"], + ["/basic-docs/atomicdex-api-20-dev/lightning_payments_list_payments_by_filter.md", "list_payments_by_filter"], + ["/basic-docs/atomicdex-api-20-dev/lightning_payments_send_payment.md", "send_payment"] + ] + } ] }, { diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_close_channel.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_close_channel.md index 5a8cd8cac..f099c96cd 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_close_channel.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_close_channel.md @@ -1,3 +1,11 @@ +## lightning\:\:channels\:\:close_channel + +| Parameter | Type | Description | +|----------------------|---------|-------------| +| coin | string | A coin ticker | +| rpc_channel_id | integer | Channel ID you would like to see the details of | +| force_close | boolean | Optional, defaults to `false`. If `true`, will force closing the channel | + { "userpass": "{{userpass}}", "mmrpc": "2.0", @@ -5,7 +13,7 @@ "params": { "coin": "tBTC-TEST-lightning", "rpc_channel_id": 1 - // "force_close": false + "force_close": false } - // "id": null // Accepted values: Integers + "id": 8 } \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_channel_details.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_channel_details.md index 685708a71..b875fddb3 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_channel_details.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_channel_details.md @@ -1,3 +1,11 @@ +## lightning\:\:channels\:\:get_channel_details + +| Parameter | Type | Description | +|----------------------|---------|-------------| +| coin | string | A coin ticker | +| rpc_channel_id | integer | Channel ID you would like to see the details of | + + { "userpass": "userpass", "mmrpc": "2.0", diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_claimable_balances.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_claimable_balances.md index 6ef8bbe4e..a9098ff31 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_claimable_balances.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_claimable_balances.md @@ -1,3 +1,11 @@ +## lightning\:\:channels\:\:get_claimable_balances + +| Parameter | Type | Description | +|--------------------------------|---------|-------------| +| coin | string | A coin ticker | +| include_open_channels_balances | boolean | `true` to include balances from open channels, `false` if not | + + { "userpass": "userpass", "mmrpc": "2.0", diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_closed_channels_by_filter.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_closed_channels_by_filter.md index d0af6d57f..f47fc69a5 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_closed_channels_by_filter.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_closed_channels_by_filter.md @@ -1,10 +1,10 @@ -## List closed channels by filter +## lightning\:\:channels\:\:list_closed_channels_by_filter | Parameter | Type | Description | |----------------------|---------|-------------| | coin | string | The ticker of the coin you would like to view closed channels for | -| filter | object | [Lightning channels fliter](/basic-docs/atomicdex/common-structures.html#Lightning_channel_filter) | -| limit | string | | +| filter | object | [Lightning closed channels filter](/basic-docs/atomicdex/common-structures.html#Lightning_closed_channel_filter) (optional) | +| limit | string | Max number of records to return (optional) | { "userpass": "userpass", @@ -73,15 +73,3 @@ "id": 55 } - -{ - "userpass": "userpass", - "mmrpc": "2.0", - "method": "lightning::channels::list_closed_channels_by_filter", - "params": { - "coin": "tBTC-TEST-lightning" - } - "id": 55 -} - - diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_open_channels_by_filter.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_open_channels_by_filter.md index 30ae88e20..dc6d3b3c5 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_open_channels_by_filter.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_open_channels_by_filter.md @@ -1,32 +1,79 @@ +## lightning\:\:channels\:\:list_open_channels_by_filter + +| Parameter | Type | Description | +|----------------------|---------|-------------| +| coin | string | The ticker of the coin you would like to view closed channels for | +| filter | object | [Lightning open channels filter](/basic-docs/atomicdex/common-structures.html#Lightning_open_channels_filter) (optional) | +| limit | string | Max number of records to return (optional) | + { "userpass": "userpass", "mmrpc": "2.0", "method": "lightning::channels::list_open_channels_by_filter", "params": { "coin": "tBTC-TEST-lightning" - // "filter": null, - // // "filter": { - // // // "channel_id": null, // Accepted values: Strings - // // // "counterparty_node_id": null, // Accepted values: Strings - // // // "funding_tx": null, // Accepted values: Strings - // // // "from_funding_value_sats": null, // Accepted values: Integers - // // // "to_funding_value_sats": null, // Accepted values: Integers - // // // "is_outbound": null, // Accepted values: Booleans - // // // "from_balance_msat": null, // Accepted values: Integers - // // // "to_balance_msat": null, // Accepted values: Integers - // // // "from_outbound_capacity_msat": null, // Accepted values: Integers - // // // "to_outbound_capacity_msat": null, // Accepted values: Integers - // // // "from_inbound_capacity_msat": null, // Accepted values: Integers - // // // "to_inbound_capacity_msat": null, // Accepted values: Integers - // // // "confirmed": null, // Accepted values: Booleans - // // // "is_usable": null, // Accepted values: Booleans - // // // "is_public": null // Accepted values: Booleans - // // }, - // "limit": 10, - // "paging_options": { - // "PageNumber": 1 - // // "FromId": 4 // used instead of: "PageNumber" - // } } - "id": 45 -} \ No newline at end of file + "id": 55 +} + +{ + "userpass": "userpass", + "mmrpc": "2.0", + "method": "lightning::channels::list_open_channels_by_filter", + "params": { + "coin": "tBTC-TEST-lightning" + "filter": { + "channel_id": null, + "counterparty_node_id": null, + "funding_tx": null, + "from_funding_value_sats": null, + "to_funding_value_sats": null, + "is_outbound": null, + "from_balance_msat": null, + "to_balance_msat": null, + "from_outbound_capacity_msat": null, + "to_outbound_capacity_msat": null, + "from_inbound_capacity_msat": null, + "to_inbound_capacity_msat": null, + "confirmed": null, + "is_usable": null, + "is_public": null + }, + "limit": 10, + "paging_options": { + "PageNumber": 1 + } + } + "id": 55 +} + +{ + "userpass": "userpass", + "mmrpc": "2.0", + "method": "lightning::channels::list_open_channels_by_filter", + "params": { + "coin": "tBTC-TEST-lightning" + "filter": { + "channel_id": null, + "counterparty_node_id": null, + "funding_tx": null, + "from_funding_value_sats": null, + "to_funding_value_sats": null, + "is_outbound": null, + "from_balance_msat": null, + "to_balance_msat": null, + "from_outbound_capacity_msat": null, + "to_outbound_capacity_msat": null, + "from_inbound_capacity_msat": null, + "to_inbound_capacity_msat": null, + "confirmed": null, + "is_usable": null, + "is_public": null + }, + "limit": 10, + "paging_options": { + "FromId": 4 + } + } + "id": 55 +} diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_update_channel.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_update_channel.md index 06fb97d6d..39d99ccaf 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_update_channel.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_update_channel.md @@ -13,5 +13,5 @@ // "force_close_avoidance_max_fee_satoshis": 1000 // Default: Coin Config } } - // "id": null // Accepted values: Integers + "id": 1 } \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_add_trusted_node.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_add_trusted_node.md index 083962294..e81183f00 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_add_trusted_node.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_add_trusted_node.md @@ -1,3 +1,11 @@ +## lightning\:\:nodes\:\:add_trusted_node + +| Parameter | Type | Description | +|----------------------|---------|-------------| +| coin | string | A coin ticker | +| node_id | string | ID of node you would like to add to your trusted list | + + { "userpass": "userpass", "mmrpc": "2.0", @@ -6,5 +14,5 @@ "coin": "tBTC-TEST-lightning", "node_id": "038863cf8ab91046230f561cd5b386cbff8309fa02e3f0c3ed161a3aeb64a643b9" } - "id": 565 + "id": 56 } \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_connect_to_node.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_connect_to_node.md index e05f755d4..ee9dc0714 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_connect_to_node.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_connect_to_node.md @@ -1,3 +1,10 @@ +## connect\_to\_node + +| Parameter | Type | Description | +|----------------------|---------|-------------| +| coin | string | A coin ticker | +| node_address | string | URI to a lighning node | + { "userpass": "{{userpass}}", "mmrpc": "2.0", @@ -6,5 +13,5 @@ "coin": "tBTC-TEST-lightning", "node_address": "038863cf8ab91046230f561cd5b386cbff8309fa02e3f0c3ed161a3aeb64a643b9@203.132.94.196:9735" } - // "id": null // Accepted values: Integers + "id": 1 } \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_list_trusted_nodes.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_list_trusted_nodes.md index f3d729420..dd22016c9 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_list_trusted_nodes.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_list_trusted_nodes.md @@ -1,3 +1,9 @@ +## lightning\:\:nodes\:\:list_trusted_nodes + +| Parameter | Type | Description | +|----------------------|---------|-------------| +| coin | string | A coin ticker | + { "userpass": "{{userpass}}", "mmrpc": "2.0", @@ -5,5 +11,5 @@ "params": { "coin": "tBTC-TEST-lightning" } - // "id": null // Accepted values: Integers + "id": 1 } \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_remove_trusted_node.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_remove_trusted_node.md index 3eb259717..2b1cdcc81 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_remove_trusted_node.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_remove_trusted_node.md @@ -1,3 +1,10 @@ +## lightning\:\:nodes\:\:remove_trusted_node + +| Parameter | Type | Description | +|----------------------|---------|-------------| +| coin | string | A coin ticker | +| node_id | string | ID of node you would like to remove to your trusted list | + { "userpass": "{{userpass}}", "mmrpc": "2.0", @@ -6,5 +13,5 @@ "coin": "tBTC-TEST-lightning", "node_id": "038863cf8ab91046230f561cd5b386cbff8309fa02e3f0c3ed161a3aeb64a643b9" } - // "id": null // Accepted values: Integers + "id": 1 } \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_generate_invoice.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_generate_invoice.md index 4b08041d4..94789165e 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_generate_invoice.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_generate_invoice.md @@ -1,3 +1,13 @@ +## lightning\:\:payments\:\:generate_invoice + +| Parameter | Type | Description | +|----------------------|---------|-------------| +| coin | string | Ticker of coin | +| description | object | Description of the invoice | +| amount_in_msat | integer | Max number of records to return (optional) | +| expiry | integer | Epoch timestamp of expiry (optional) | + + { "userpass": "userpass", "mmrpc": "2.0", @@ -5,8 +15,19 @@ "params": { "coin": "tBTC-TEST-lightning", "description": "test invoice" - // "amount_in_msat": null, // Accepted values: Integers - // "expiry": null // Accepted values: Integers + } + "id": 56 +} + +{ + "userpass": "userpass", + "mmrpc": "2.0", + "method": "lightning::payments::generate_invoice", + "params": { + "coin": "tBTC-TEST-lightning", + "description": "test invoice" + "amount_in_msat": null, + "expiry": null } "id": 56 } \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_get_payment_details.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_get_payment_details.md index de54841a3..4a1eb48c0 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_get_payment_details.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_get_payment_details.md @@ -1,3 +1,10 @@ +## lightning\:\:payments\:\:get_payment_details + +| Parameter | Type | Description | +|----------------------|---------|-------------| +| coin | string | A coin ticker | +| payment_hash | string | The payment hash you would like to view the details for | + { "userpass": "{{userpass}}", "mmrpc": "2.0", @@ -6,5 +13,5 @@ "coin": "tBTC-TEST-lightning", "payment_hash": "32f996e6e0aa88e567318beeadb37b6bc0fddfd3660d4a87726f308ed1ec7b33" } - // "id": null // Accepted values: Integers + "id": 1 } \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_send_payment.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_send_payment.md index d65bea828..74d916c6c 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_send_payment.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_send_payment.md @@ -1,3 +1,11 @@ +## lightning\:\:payments\:\:send_payment + +| Parameter | Type | Description | +|------------|---------|-------------| +| coin | string | A coin ticker | +| payment | object | [Lightning payment object](/basic-docs/atomicdex/common-structures.html#Lightning_payment) | + + { "userpass": "{{userpass}}", "mmrpc": "2.0", diff --git a/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_cancel.md b/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_cancel.md index 7bd9d2934..f101804e6 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_cancel.md +++ b/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_cancel.md @@ -1,3 +1,9 @@ +## task\:\:enable_lightning\:\:cancel + +| Parameter | Type | Description | +|----------------------|---------|-------------| +| task_id | integer | The task id returned from [task::enable_lightning::init](/basic-docs/atomicdex-api-20-dev/lighting-tasks.html#task_enable_lightning_init) | + { "userpass": "{{userpass}}", "mmrpc": "2.0", @@ -5,5 +11,5 @@ "params": { "task_id": 0 } - // "id": null // Accepted values: Integers + "id": 1 } \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_init.md b/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_init.md index 6ffdc46eb..2cfd4b857 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_init.md +++ b/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_init.md @@ -1,3 +1,12 @@ +## task\:\:enable_lightning\:\:init + +| Parameter | Type | Description | +|----------------------|---------|-------------| +| name | string | a name for your channel? | +| listening port | integer | Port listening for broadcasts (optional) | +| color | string | no idea (optional) | +| backup_path | string | no idea (optional) | + { "userpass": "{{userpass}}", "mmrpc": "2.0", @@ -6,11 +15,24 @@ "ticker": "tBTC-TEST-lightning", "activation_params": { "name": "Mm2TestNode" - // "listening_port": 9735, - // "color": "000000", - // "payment_retries": 5, - // "backup_path": null // Accepted values: Strings } } - // "id": null // Accepted values: Integers + "id": 2 +} + +{ + "userpass": "{{userpass}}", + "mmrpc": "2.0", + "method": "task::enable_lightning::init", + "params": { + "ticker": "tBTC-TEST-lightning", + "activation_params": { + "name": "Mm2TestNode" + "listening_port": 9735, + "color": "000000", + "payment_retries": 5, + "backup_path": null + } + } + "id": 2 } \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_status.md b/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_status.md index adda37405..5c0900b86 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_status.md +++ b/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_status.md @@ -1,10 +1,17 @@ +## task\:\:enable\_lightning\:\:status + +| Parameter | Type | Description | +|----------------------|---------|-------------| +| task_id | integer | The task id returned from [task::enable_lightning::init](/basic-docs/atomicdex-api-20-dev/lighting-tasks.html#task_enable_lightning_init) | +| forget_if_finished | boolean | Optional, defaults to `true`. If `false`, task_is status will still be available after the task has completed | + { "userpass": "{{userpass}}", "mmrpc": "2.0", "method": "task::enable_lightning::status", "params": { "task_id": 0 - // "forget_if_finished": true + "forget_if_finished": true } - // "id": null // Accepted values: Integers + "id": 2 } \ No newline at end of file diff --git a/docs/basic-docs/atomicdex/common-structures.md b/docs/basic-docs/atomicdex/common-structures.md index 7b85d9d2b..0cb9be9cb 100644 --- a/docs/basic-docs/atomicdex/common-structures.md +++ b/docs/basic-docs/atomicdex/common-structures.md @@ -1,4 +1,4 @@ -## Lightning\_channels\_filter +## Lightning\_close\_channels\_filter | Parameter | Type | Description | |----------------------|---------|-------------| @@ -18,18 +18,87 @@ ``` "filter": { - "channel_id": null, // Accepted values: Strings - "counterparty_node_id": null, // Accepted values: Strings - "funding_tx": null, // Accepted values: Strings - "from_funding_value": null, // Accepted values: Integers - "to_funding_value": null, // Accepted values: Integers - "closing_tx": null, // Accepted values: Strings - "closure_reason": null, // Accepted values: Strings - "claiming_tx": null, // Accepted values: Strings - "from_claimed_balance": null, // Accepted values: Decimals - "to_claimed_balance": null, // Accepted values: Decimals - "channel_type": null, // Accepted values: "Outbound", "Inbound" - "channel_visibility": null // Accepted values: "Public", "Private" + "channel_id": null, + "counterparty_node_id": null, + "funding_tx": null, + "from_funding_value": null, + "to_funding_value": null, + "closing_tx": null, + "closure_reason": null, + "claiming_tx": null, + "from_claimed_balance": null, + "to_claimed_balance": null, + "channel_type": null, + "channel_visibility": null +} +``` + +## Lightning\_open\_channels\_filter + +| Parameter | Type | Description | +|----------------------|---------|-------------| +| channel_id | string | | +| counterparty_node_id | string | | +| funding_tx | string | | +| from_funding_value | integer | | +| to_funding_value | integer | | +| closing_tx | string | | +| closure_reason | string | | +| claiming_tx | string | | +| from_claimed_balance | decimal | | +| to_claimed_balance | decimal | | +| channel_type | string | Accepted values: "Outbound", "Inbound" | +| channel_visibility | string | Accepted values: "Public", "Private" | + + +``` +"filter": { + "channel_id": null, + "counterparty_node_id": null, + "funding_tx": null, + "from_funding_value_sats": null, + "to_funding_value_sats": null, + "is_outbound": null, + "from_balance_msat": null, + "to_balance_msat": null, + "from_outbound_capacity_msat": null, + "to_outbound_capacity_msat": null, + "from_inbound_capacity_msat": null, + "to_inbound_capacity_msat": null, + "confirmed": null, + "is_usable": null, + "is_public": null +} +``` + +## Lightning\_payment + +| Parameter | Type | Description | +|------------------|---------|-------------| +| type | string | Accepted values: `invoice` or `keysend` | +| invoice | string | Required if `invoice`. uniue string representing an invoice. Use [lightning::payments::get_payment_details](/basic-docs/atomicdex/lightning_payments_get_payment_details.html) for more information | +| destination | integer | Required if `keysend`. Destination pubkey to send funds to | +| amount_in_msat | integer | Required if `keysend`. Amount to sent in millisats | +| expiry | integer | Required if `keysend`. Timestamp for expiry of payment broadcast | + + +``` +"filter": { + "channel_id": null, + "counterparty_node_id": null, + "funding_tx": null, + "from_funding_value_sats": null, + "to_funding_value_sats": null, + "is_outbound": null, + "from_balance_msat": null, + "to_balance_msat": null, + "from_outbound_capacity_msat": null, + "to_outbound_capacity_msat": null, + "from_inbound_capacity_msat": null, + "to_inbound_capacity_msat": null, + "confirmed": null, + "is_usable": null, + "is_public": null } ``` From 7326eb011212e2136602adee8b75e65ae3e05754 Mon Sep 17 00:00:00 2001 From: smk762 Date: Wed, 15 Mar 2023 06:04:14 +0800 Subject: [PATCH 4/5] clean up json --- .../lightning_channels_close_channel.md | 11 ++++++---- .../lightning_channels_get_channel_details.md | 9 +++++--- ...ghtning_channels_get_claimable_balances.md | 10 +++++---- ...channels_list_closed_channels_by_filter.md | 21 ++++++++++++------- ...g_channels_list_open_channels_by_filter.md | 17 +++++++++------ .../lightning_channels_open_channel.md | 6 +++++- .../lightning_channels_update_channel.md | 8 +++++-- .../lightning_nodes_add_trusted_node.md | 8 ++++--- .../lightning_nodes_connect_to_node.md | 8 ++++--- .../lightning_nodes_list_trusted_nodes.md | 8 ++++--- .../lightning_nodes_remove_trusted_node.md | 8 ++++--- .../lightning_payments_generate_invoice.md | 16 +++++++++----- .../lightning_payments_get_payment_details.md | 8 ++++--- ...htning_payments_list_payments_by_filter.md | 6 +++++- .../lightning_payments_send_payment.md | 6 ++++-- .../task_enable_lightning_cancel.md | 8 ++++--- .../task_enable_lightning_init.md | 16 +++++++++----- .../task_enable_lightning_status.md | 10 +++++---- .../basic-docs/atomicdex/common-structures.md | 10 ++++----- 19 files changed, 126 insertions(+), 68 deletions(-) diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_close_channel.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_close_channel.md index f099c96cd..9ab533d59 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_close_channel.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_close_channel.md @@ -1,4 +1,4 @@ -## lightning\:\:channels\:\:close_channel +### lightning\:\:channels\:\:close_channel | Parameter | Type | Description | |----------------------|---------|-------------| @@ -6,14 +6,17 @@ | rpc_channel_id | integer | Channel ID you would like to see the details of | | force_close | boolean | Optional, defaults to `false`. If `true`, will force closing the channel | + +```json { "userpass": "{{userpass}}", "mmrpc": "2.0", "method": "lightning::channels::close_channel", "params": { "coin": "tBTC-TEST-lightning", - "rpc_channel_id": 1 + "rpc_channel_id": 1, "force_close": false - } + }, "id": 8 -} \ No newline at end of file +} +``` diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_channel_details.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_channel_details.md index b875fddb3..a0cda88ca 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_channel_details.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_channel_details.md @@ -1,4 +1,4 @@ -## lightning\:\:channels\:\:get_channel_details +### lightning\:\:channels\:\:get_channel_details | Parameter | Type | Description | |----------------------|---------|-------------| @@ -6,6 +6,8 @@ | rpc_channel_id | integer | Channel ID you would like to see the details of | + +```json { "userpass": "userpass", "mmrpc": "2.0", @@ -13,6 +15,7 @@ "params": { "coin": "tBTC-TEST-lightning", "rpc_channel_id": 1 - } + }, "id": 54 -} \ No newline at end of file +} +``` \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_claimable_balances.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_claimable_balances.md index a9098ff31..c49c02e89 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_claimable_balances.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_get_claimable_balances.md @@ -1,4 +1,4 @@ -## lightning\:\:channels\:\:get_claimable_balances +### lightning\:\:channels\:\:get_claimable_balances | Parameter | Type | Description | |--------------------------------|---------|-------------| @@ -6,13 +6,15 @@ | include_open_channels_balances | boolean | `true` to include balances from open channels, `false` if not | +```json { "userpass": "userpass", "mmrpc": "2.0", "method": "lightning::channels::get_claimable_balances", "params": { - "coin": "tBTC-TEST-lightning" + "coin": "tBTC-TEST-lightning", "include_open_channels_balances": false - } + }, "id": 762 -} \ No newline at end of file +} +``` \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_closed_channels_by_filter.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_closed_channels_by_filter.md index f47fc69a5..26ff66370 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_closed_channels_by_filter.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_closed_channels_by_filter.md @@ -1,4 +1,4 @@ -## lightning\:\:channels\:\:list_closed_channels_by_filter +### lightning\:\:channels\:\:list_closed_channels_by_filter | Parameter | Type | Description | |----------------------|---------|-------------| @@ -6,23 +6,25 @@ | filter | object | [Lightning closed channels filter](/basic-docs/atomicdex/common-structures.html#Lightning_closed_channel_filter) (optional) | | limit | string | Max number of records to return (optional) | +```json { "userpass": "userpass", "mmrpc": "2.0", "method": "lightning::channels::list_closed_channels_by_filter", "params": { "coin": "tBTC-TEST-lightning" - } + }, "id": 55 } +``` - +```json { "userpass": "userpass", "mmrpc": "2.0", "method": "lightning::channels::list_closed_channels_by_filter", "params": { - "coin": "tBTC-TEST-lightning" + "coin": "tBTC-TEST-lightning", "filter": { "channel_id": null, "counterparty_node_id": null, @@ -41,16 +43,19 @@ "paging_options": { "PageNumber": 1 } - } + }, "id": 55 } +``` + +```json { "userpass": "userpass", "mmrpc": "2.0", "method": "lightning::channels::list_closed_channels_by_filter", "params": { - "coin": "tBTC-TEST-lightning" + "coin": "tBTC-TEST-lightning", "filter": { "channel_id": null, "counterparty_node_id": null, @@ -69,7 +74,7 @@ "paging_options": { "FromId": 4 } - } + }, "id": 55 } - +``` \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_open_channels_by_filter.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_open_channels_by_filter.md index dc6d3b3c5..f1c73b90d 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_open_channels_by_filter.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_list_open_channels_by_filter.md @@ -1,4 +1,4 @@ -## lightning\:\:channels\:\:list_open_channels_by_filter +### lightning\:\:channels\:\:list_open_channels_by_filter | Parameter | Type | Description | |----------------------|---------|-------------| @@ -6,22 +6,26 @@ | filter | object | [Lightning open channels filter](/basic-docs/atomicdex/common-structures.html#Lightning_open_channels_filter) (optional) | | limit | string | Max number of records to return (optional) | + +```json { "userpass": "userpass", "mmrpc": "2.0", "method": "lightning::channels::list_open_channels_by_filter", "params": { "coin": "tBTC-TEST-lightning" - } + }, "id": 55 } +``` +```json { "userpass": "userpass", "mmrpc": "2.0", "method": "lightning::channels::list_open_channels_by_filter", "params": { - "coin": "tBTC-TEST-lightning" + "coin": "tBTC-TEST-lightning", "filter": { "channel_id": null, "counterparty_node_id": null, @@ -43,7 +47,7 @@ "paging_options": { "PageNumber": 1 } - } + }, "id": 55 } @@ -52,7 +56,7 @@ "mmrpc": "2.0", "method": "lightning::channels::list_open_channels_by_filter", "params": { - "coin": "tBTC-TEST-lightning" + "coin": "tBTC-TEST-lightning", "filter": { "channel_id": null, "counterparty_node_id": null, @@ -74,6 +78,7 @@ "paging_options": { "FromId": 4 } - } + }, "id": 55 } +``` diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_open_channel.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_open_channel.md index 56cfb0dd0..f1942334f 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_open_channel.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_open_channel.md @@ -1,3 +1,5 @@ + +```json { "userpass": "{{userpass}}", "mmrpc": "2.0", @@ -27,4 +29,6 @@ // } } // "id": null // Accepted values: Integers -} \ No newline at end of file +} + +``` \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_update_channel.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_update_channel.md index 39d99ccaf..48af0f164 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_update_channel.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_channels_update_channel.md @@ -1,3 +1,5 @@ + +```json { "userpass": "{{userpass}}", "mmrpc": "2.0", @@ -12,6 +14,8 @@ // "max_dust_htlc_exposure_msat": 5000000, // Default: Coin Config // "force_close_avoidance_max_fee_satoshis": 1000 // Default: Coin Config } - } + }, "id": 1 -} \ No newline at end of file +} + +``` diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_add_trusted_node.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_add_trusted_node.md index e81183f00..cc381ae8d 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_add_trusted_node.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_add_trusted_node.md @@ -1,4 +1,4 @@ -## lightning\:\:nodes\:\:add_trusted_node +### lightning\:\:nodes\:\:add_trusted_node | Parameter | Type | Description | |----------------------|---------|-------------| @@ -6,6 +6,7 @@ | node_id | string | ID of node you would like to add to your trusted list | +```json { "userpass": "userpass", "mmrpc": "2.0", @@ -13,6 +14,7 @@ "params": { "coin": "tBTC-TEST-lightning", "node_id": "038863cf8ab91046230f561cd5b386cbff8309fa02e3f0c3ed161a3aeb64a643b9" - } + }, "id": 56 -} \ No newline at end of file +} +``` diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_connect_to_node.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_connect_to_node.md index ee9dc0714..511fc82a2 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_connect_to_node.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_connect_to_node.md @@ -1,10 +1,11 @@ -## connect\_to\_node +#### connect\:\:to\:\:node | Parameter | Type | Description | |----------------------|---------|-------------| | coin | string | A coin ticker | | node_address | string | URI to a lighning node | +```json { "userpass": "{{userpass}}", "mmrpc": "2.0", @@ -12,6 +13,7 @@ "params": { "coin": "tBTC-TEST-lightning", "node_address": "038863cf8ab91046230f561cd5b386cbff8309fa02e3f0c3ed161a3aeb64a643b9@203.132.94.196:9735" - } + }, "id": 1 -} \ No newline at end of file +} +``` \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_list_trusted_nodes.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_list_trusted_nodes.md index dd22016c9..a0d33100c 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_list_trusted_nodes.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_list_trusted_nodes.md @@ -1,15 +1,17 @@ -## lightning\:\:nodes\:\:list_trusted_nodes +### lightning\:\:nodes\:\:list_trusted_nodes | Parameter | Type | Description | |----------------------|---------|-------------| | coin | string | A coin ticker | +```json { "userpass": "{{userpass}}", "mmrpc": "2.0", "method": "lightning::nodes::list_trusted_nodes", "params": { "coin": "tBTC-TEST-lightning" - } + }, "id": 1 -} \ No newline at end of file +} +``` diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_remove_trusted_node.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_remove_trusted_node.md index 2b1cdcc81..201056a80 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_remove_trusted_node.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_nodes_remove_trusted_node.md @@ -1,10 +1,11 @@ -## lightning\:\:nodes\:\:remove_trusted_node +### lightning\:\:nodes\:\:remove_trusted_node | Parameter | Type | Description | |----------------------|---------|-------------| | coin | string | A coin ticker | | node_id | string | ID of node you would like to remove to your trusted list | +```json { "userpass": "{{userpass}}", "mmrpc": "2.0", @@ -12,6 +13,7 @@ "params": { "coin": "tBTC-TEST-lightning", "node_id": "038863cf8ab91046230f561cd5b386cbff8309fa02e3f0c3ed161a3aeb64a643b9" - } + }, "id": 1 -} \ No newline at end of file +} +``` diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_generate_invoice.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_generate_invoice.md index 94789165e..d4a7080d8 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_generate_invoice.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_generate_invoice.md @@ -1,4 +1,4 @@ -## lightning\:\:payments\:\:generate_invoice +### lightning\:\:payments\:\:generate_invoice | Parameter | Type | Description | |----------------------|---------|-------------| @@ -8,6 +8,8 @@ | expiry | integer | Epoch timestamp of expiry (optional) | + +```json { "userpass": "userpass", "mmrpc": "2.0", @@ -15,19 +17,23 @@ "params": { "coin": "tBTC-TEST-lightning", "description": "test invoice" - } + }, "id": 56 } +``` + +```json { "userpass": "userpass", "mmrpc": "2.0", "method": "lightning::payments::generate_invoice", "params": { "coin": "tBTC-TEST-lightning", - "description": "test invoice" + "description": "test invoice", "amount_in_msat": null, "expiry": null - } + }, "id": 56 -} \ No newline at end of file +} +``` diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_get_payment_details.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_get_payment_details.md index 4a1eb48c0..83d2778b3 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_get_payment_details.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_get_payment_details.md @@ -1,10 +1,11 @@ -## lightning\:\:payments\:\:get_payment_details +### lightning\:\:payments\:\:get_payment_details | Parameter | Type | Description | |----------------------|---------|-------------| | coin | string | A coin ticker | | payment_hash | string | The payment hash you would like to view the details for | +```json { "userpass": "{{userpass}}", "mmrpc": "2.0", @@ -12,6 +13,7 @@ "params": { "coin": "tBTC-TEST-lightning", "payment_hash": "32f996e6e0aa88e567318beeadb37b6bc0fddfd3660d4a87726f308ed1ec7b33" - } + }, "id": 1 -} \ No newline at end of file +} +``` \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_list_payments_by_filter.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_list_payments_by_filter.md index 60c82e68c..3c7ba1f0d 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_list_payments_by_filter.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_list_payments_by_filter.md @@ -1,3 +1,6 @@ + + +```json { "userpass": "{{userpass}}", "mmrpc": "2.0", @@ -27,4 +30,5 @@ // } } // "id": null // Accepted values: Integers -} \ No newline at end of file +} +``` \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_send_payment.md b/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_send_payment.md index 74d916c6c..f924de92f 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_send_payment.md +++ b/docs/basic-docs/atomicdex-api-20-dev/lightning_payments_send_payment.md @@ -1,4 +1,4 @@ -## lightning\:\:payments\:\:send_payment +### lightning\:\:payments\:\:send_payment | Parameter | Type | Description | |------------|---------|-------------| @@ -6,6 +6,7 @@ | payment | object | [Lightning payment object](/basic-docs/atomicdex/common-structures.html#Lightning_payment) | +```json { "userpass": "{{userpass}}", "mmrpc": "2.0", @@ -21,4 +22,5 @@ } } // "id": null // Accepted values: Integers -} \ No newline at end of file +} +``` \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_cancel.md b/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_cancel.md index f101804e6..868340731 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_cancel.md +++ b/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_cancel.md @@ -1,15 +1,17 @@ -## task\:\:enable_lightning\:\:cancel +### task\:\:enable_lightning\:\:cancel | Parameter | Type | Description | |----------------------|---------|-------------| | task_id | integer | The task id returned from [task::enable_lightning::init](/basic-docs/atomicdex-api-20-dev/lighting-tasks.html#task_enable_lightning_init) | +```json { "userpass": "{{userpass}}", "mmrpc": "2.0", "method": "task::enable_lightning::cancel", "params": { "task_id": 0 - } + }, "id": 1 -} \ No newline at end of file +} +``` \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_init.md b/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_init.md index 2cfd4b857..75ed0f967 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_init.md +++ b/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_init.md @@ -1,4 +1,4 @@ -## task\:\:enable_lightning\:\:init +### task\:\:enable_lightning\:\:init | Parameter | Type | Description | |----------------------|---------|-------------| @@ -7,6 +7,8 @@ | color | string | no idea (optional) | | backup_path | string | no idea (optional) | + +```json { "userpass": "{{userpass}}", "mmrpc": "2.0", @@ -16,10 +18,13 @@ "activation_params": { "name": "Mm2TestNode" } - } + }, "id": 2 } +``` + +```json { "userpass": "{{userpass}}", "mmrpc": "2.0", @@ -27,12 +32,13 @@ "params": { "ticker": "tBTC-TEST-lightning", "activation_params": { - "name": "Mm2TestNode" + "name": "Mm2TestNode", "listening_port": 9735, "color": "000000", "payment_retries": 5, "backup_path": null } - } + }, "id": 2 -} \ No newline at end of file +} +``` \ No newline at end of file diff --git a/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_status.md b/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_status.md index 5c0900b86..6754f833f 100644 --- a/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_status.md +++ b/docs/basic-docs/atomicdex-api-20-dev/task_enable_lightning_status.md @@ -1,17 +1,19 @@ -## task\:\:enable\_lightning\:\:status +### task\:\:enable\_lightning\:\:status | Parameter | Type | Description | |----------------------|---------|-------------| | task_id | integer | The task id returned from [task::enable_lightning::init](/basic-docs/atomicdex-api-20-dev/lighting-tasks.html#task_enable_lightning_init) | | forget_if_finished | boolean | Optional, defaults to `true`. If `false`, task_is status will still be available after the task has completed | +```json { "userpass": "{{userpass}}", "mmrpc": "2.0", "method": "task::enable_lightning::status", "params": { - "task_id": 0 + "task_id": 0, "forget_if_finished": true - } + }, "id": 2 -} \ No newline at end of file +} +``` \ No newline at end of file diff --git a/docs/basic-docs/atomicdex/common-structures.md b/docs/basic-docs/atomicdex/common-structures.md index 0cb9be9cb..480897381 100644 --- a/docs/basic-docs/atomicdex/common-structures.md +++ b/docs/basic-docs/atomicdex/common-structures.md @@ -16,7 +16,7 @@ | channel_visibility | string | Accepted values: "Public", "Private" | -``` +```json "filter": { "channel_id": null, "counterparty_node_id": null, @@ -51,7 +51,7 @@ | channel_visibility | string | Accepted values: "Public", "Private" | -``` +```json "filter": { "channel_id": null, "counterparty_node_id": null, @@ -82,7 +82,7 @@ | expiry | integer | Required if `keysend`. Timestamp for expiry of payment broadcast | -``` +```json "filter": { "channel_id": null, "counterparty_node_id": null, @@ -111,13 +111,13 @@ Use either value, not both. -``` +```json { "PageNumber": 1 } ``` -``` +```json { "FromId": 4 } From a706cb1714779c68a0fe19518bbbc112483f1fe6 Mon Sep 17 00:00:00 2001 From: smk762 Date: Sat, 18 Mar 2023 22:36:44 +0800 Subject: [PATCH 5/5] add coin listing guide --- docs/.vuepress/atomicDEX-sidebar.js | 4 + docs/.vuepress/public/apis/gecko_api.png | Bin 0 -> 50339 bytes docs/.vuepress/public/apis/nomics_api.png | Bin 0 -> 118014 bytes docs/.vuepress/public/apis/paprika_api.png | Bin 0 -> 17805 bytes docs/.vuepress/public/apis/qtum.png | Bin 0 -> 5047 bytes .../listing-a-coin-on-atomicdex.md | 340 ++++++++++++++++++ 6 files changed, 344 insertions(+) create mode 100644 docs/.vuepress/public/apis/gecko_api.png create mode 100644 docs/.vuepress/public/apis/nomics_api.png create mode 100644 docs/.vuepress/public/apis/paprika_api.png create mode 100644 docs/.vuepress/public/apis/qtum.png create mode 100644 docs/basic-docs/atomicdex/atomicdex-tutorials/listing-a-coin-on-atomicdex.md diff --git a/docs/.vuepress/atomicDEX-sidebar.js b/docs/.vuepress/atomicDEX-sidebar.js index 2c9814142..ef09f9526 100644 --- a/docs/.vuepress/atomicDEX-sidebar.js +++ b/docs/.vuepress/atomicDEX-sidebar.js @@ -50,6 +50,10 @@ let atomicDEXsidebar = { "/basic-docs/atomicdex/atomicdex-tutorials/add-coin-to-atomicdex-desktop.md", "List a new coin on AtomicDEX Desktop", ], + [ + "/basic-docs/atomicdex/atomicdex-tutorials/listing-a-coin-on-atomicdex.md", + "Adding a new coin to the AtomicDEX-API", + ], [ "/basic-docs/atomicdex/atomicdex-tutorials/how-to-become-a-liquidity-provider.md", "How to Become a Liquidity Provider", diff --git a/docs/.vuepress/public/apis/gecko_api.png b/docs/.vuepress/public/apis/gecko_api.png new file mode 100644 index 0000000000000000000000000000000000000000..0f6d2986820482c4af8e405987b1863172da28d7 GIT binary patch literal 50339 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 TUDCyX0e>XE$cp?B(hvM!j)}T~ literal 0 HcmV?d00001 diff --git a/docs/.vuepress/public/apis/nomics_api.png b/docs/.vuepress/public/apis/nomics_api.png new file mode 100644 index 0000000000000000000000000000000000000000..b646b489c481f5c8dc07924b4f7a4b3f5fde53f7 GIT binary patch literal 118014 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 Br*{AV literal 0 HcmV?d00001 diff --git a/docs/.vuepress/public/apis/paprika_api.png b/docs/.vuepress/public/apis/paprika_api.png new file mode 100644 index 0000000000000000000000000000000000000000..ff450b28fe80223ba68041fad1fc1ab65b77a67b GIT binary patch literal 17805 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 literal 0 HcmV?d00001 diff --git a/docs/.vuepress/public/apis/qtum.png b/docs/.vuepress/public/apis/qtum.png new file mode 100644 index 0000000000000000000000000000000000000000..f973ff4fff3c50e63ddf60a1b591a458a5c82f81 GIT binary patch literal 5047 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 literal 0 HcmV?d00001 diff --git a/docs/basic-docs/atomicdex/atomicdex-tutorials/listing-a-coin-on-atomicdex.md b/docs/basic-docs/atomicdex/atomicdex-tutorials/listing-a-coin-on-atomicdex.md new file mode 100644 index 000000000..364aeff10 --- /dev/null +++ b/docs/basic-docs/atomicdex/atomicdex-tutorials/listing-a-coin-on-atomicdex.md @@ -0,0 +1,340 @@ +# Prerequisites for a coin to be compatible with AtomicDEX-API + +Before a coin can be listed in AtomicDEX, it needs to be confirmed for compatibility, and present within the [Komodo Platform coins repository](https://github.com/KomodoPlatform/coins). + +The information below details the requirements for creating a working coins configuration file and submitting a successful pull request to the [coins repository](https://github.com/KomodoPlatform/coins/tree/readme-update). Please contact our support team in the `#dev-support` channel on the [Komodo Platorm Discord](https://komodoplatform.com/discord) if you have any questions or need assistance with performing a [test swap](https://github.com/KomodoPlatform/coins/tree/master/swaps). + + +## 1. Coins JSON config (required) + +## 1a. General parameters for all coins + +Different platforms & protocols vary slightly in what data is required. Review the parameter descriptions and examples below to understand what information is needed to list your coin. + +| Parameter | Type | Description | +|------------------------|---------|-------------| +| coin | string | Ticker of the coin/token. If the coin is a token, please use `COIN-PROTOCOL` as ticker, eg `USDC-BEP20`. | +| name | string | This is the value which is expected to be default data directory name for that coin - e.g. if coin's name is `litecoin` then it's expected data directory on `~/.litecoin/` on Linux, `~/Library/Applications Support/Litecoin/` on Mac, `%AppData%\Litecoin` on Windows. Please keep this key's value in small letters only. | +| fname | string | The full name of the coin/token. | +| mm2 | integer | Indicates trading compatibility with AtomicDEX API. `1` is compatible, `0` is not compatible. Non-compatible coins may still be listed as `wallet only` in AtomicDEX apps. | +| required_confirmations | integer | Defaults to `1`. The number of confirmations AtomicDEX will wait for during the swap. WARNING, this setting affects the security of the atomic swap. 51% attacks (double spending) are a threat and have been succesfully conducted in the past. You can find a collection of coins and the theoretical cost of a 51% attack [here](https://www.crypto51.app/). Please be aware that some of the coins supported by AtomicDEX may be vulnerable to such attacks, so consider using higher confirmation values for them, especially when dealing with large amounts. | +| requires_notarization | boolean | Defaults to `false`. For coins protected by [dPoW](https://komodoplatform.com/51-attack-how-komodo-can-help-prevent-one/) can be set to `true` wait for a notarization when sending transactions during a swap. If `true`, `"required_confirmations"` must be set to `2` or higher. | +| decimals | integer | Defines the number of digits after the decimal point that should be used to display the orderbook amounts, balance, and the value of inputs to be used in the case of order creation or a `withdraw` transaction. The default value used for a UTXO type coin (Bitcoin Protocol) is `8` and the default value used for a ERC20 Token is `18`. It is **very important** for this value to be set correctly. For example, if this value was set as `9` for BTC, a command to withdraw `1 BTC` tries to withdraw `10^9` satoshis of Bitcoin, i.e., `10 BTC` | +| protocol | string | Contains the coin protocol `"type"` (UTXO, ETH, etc.) and specific protocol configuration - `"protocol_data"` object that can have arbitrary format. | +| orderbook_ticker | string | If set, coins with the same value will share the same orderbook. For example, if `BTC-Segwit` and `BTC-BEP20` are set with `"orderbook_ticker":"BTC"` the same orderbook is returned for KMD/BTC, KMD/BTC-BEP20 and KMD/BTC-Segwit pairs. | +| sign_message_prefix | string | Optional, required to allow for message signing in AtomicDEX API. Can normally be found within a projects github repository [[example](https://github.com/KomodoPlatform/komodo/blob/master/src/main.cpp#L146)] and follows a standard format like `"Komodo Signed Message:\n"` | + + +## 1b. UTXO coins (BTC, LTC, KMD, ZEC, DASH, DOGE, DGB) + +The following rpc methods should be available. + +```bash +estimatefee +getblock +getblockhash +getinfo +getrawtransaction +gettxout +importaddress +listunspent +listreceivedbyaddress +listtransactions +sendrawtransaction +``` + +| Parameter | Type | Description | +|------------------------|---------|-------------| +| name | string | This is the value which is expected to be default data directory name for that coin - e.g. if coin's name is `litecoin` then it's expected data directory on `~/.litecoin/` on Linux, `~/Library/Applications Support/Litecoin/` on Mac, `%AppData%\Litecoin` on Windows. Please keep this key's value in small letters only. | +| rpcport | integer | The coin's default RPC port. It is expected that it doesn't conflict with any existing coin in the coins db. | +| pubtype | integer | This information can be found in source code of a coin project in files like `src/init.cpp`, `src/base58.h`, and `src/chainparamsbase.h` if the project is following the **bitcoin** source code directory/files structure. If unsure, then please have these confirmed by that coin/project's developers to ensure it is correct. | +| p2shtype | integer | This information can be found in source code of a coin project in files like `src/init.cpp`, `src/base58.h`, and `src/chainparamsbase.h` if the project is following the **bitcoin** source code directory/files structure. If unsure, then please have these confirmed by that coin/project's developers to ensure it is correct. | +| wiftype | integer | This information can be found in source code of a coin project in files like `src/init.cpp`, `src/base58.h`, and `src/chainparamsbase.h` if the project is following the **bitcoin** source code directory/files structure. If unsure, then please have these confirmed by that coin/project's developers to ensure it is correct. | +| txfee | integer | The default transaction fee (in satoshi). AtomicDEX uses this as the default transaction fee value when making atomic swap transactions. If set to `0`, AtomicDEX will use a dynamic fee based on output from `estimatesmartfee`. | +| overwintered | integer | Must be `1` if Overwinter upgrade was activated for the coin. Defaults to `0`. | +| taddr | integer | Optional. Is only relevant for coins that forked the Zcash protocol and have both transparent addresses and z-addresses. The value to be set for this key can be found from the file `src/chainparams.cpp` of the coin's source code and it is the first value present in both `base58Prefixes[PUBKEY_ADDRESS]` and `base58Prefixes[SCRIPT_ADDRESS]`. But it has to be converted to decimal from HEX. So if `base58Prefixes[PUBKEY_ADDRESS]` = `{0x1C,0xB8}` , the `taddr` is `0x1C` coverted to decimal. As 0x1C in HEX = 28 in decimal, the entry in the json would be `"taddr" : 28` | +| force_min_relay_fee | boolean | If `true` for coins with dynamic fees, when a new transaction is generated, AtomicDEX-API will check whether the total fee set (`sat * tx size`) is lower than relay fee and will use the relay fee instead. Defaults to `false` | +| mtp_block_count | integer | Optional. Number of blocks to be used for the calculation of `median time past`. Must be greater than `0`. Default value is `11`. While this parameter is applicable only in the case of KMD reward calculation for now, it will be used for calculating locktimes to be set for the atomic swap refund transactions. | +| estimate_fee_mode | string | Sets the fee mode for the `estimatesmartfee` call. Supported values are: `ECONOMICAL`,`CONSERVATIVE`, `UNSET`. Please note that some coins may not support some of these modes. Makes no effect for coins that do not have the `estimatesmartfee` RPC. | +| address_format | Object | Optional. Defines whether to use the standard bitcoin address format or the cash address format for BCH. More formats may be added in the future. Possible values as of now: `"address_format":{"format":"standard"}` to set the standard BTC/UTXO address format. `"address_format":{"format":"cashaddress","network":"NETWORK_ID"}` to use BCH specific address format. `NETWORK_ID` can be: `bitcoincash` for BCH mainnet, `bchtest` for BCH testnet and `bchreg` for BCH regtest. | +| isPoS | integer | Optional, defaults to `0`. A value of `1` indicates the coin uses proof of stake, so transactions created will have the `nTime` field. | +| segwit | Boolean | If `true`, AtomicDEX-API will use to `P2SH` segwit addresses. +| version_group_id | integer | Optional, used by Zcash (and its forks') transactions. | +| consensus_branch_id | integer | Optional, used in Zcash (and its forks') transactions' signature hash calculation. | +| mature_confirmations | integer | Number of blockchain confirmations required for coinbase output to be considered mature (spendable). | + + +### UTXO coin example + +```json + { + "coin": "LTC", + "name": "litecoin", + "fname": "Litecoin", + "rpcport": 9332, + "pubtype": 48, + "p2shtype": 50, + "wiftype": 176, + "txfee": 0, + "dust": 5460, + "segwit": true, + "mm2": 1, + "required_confirmations": 2, + "avg_blocktime": 2.5, + "protocol": { + "type": "UTXO" + } + } +``` + +### Antara smartchain example + +```json + { + "coin": "MCL", + "asset": "MCL", + "fname": "MarmaraCreditLoops", + "rpcport": 33825, + "txversion": 4, + "overwintered": 1, + "mm2": 1, + "required_confirmations": 5, + "requires_notarization": false, + "avg_blocktime": 1, + "protocol": { + "type": "UTXO" + } + } +``` + + +## 1c. EVM-like tokens (ETH/ERC20, MATIC/PLG20, BNB/BEP20) + +The token's contract **must** have `approve` and `transferFrom` methods. Additionally, the `transfer` and `transferFrom` methods must return a boolean value (`true/false`) indicating whether a transfer was successful. This requirement is actually a part of the ERC20 standard, but many tokens seem to not follow it. + +- `chain_id` - ID of the chain, see [Chainlist](https://chainlist.org/) +- Protocol `"type"` field: `"ETH"` or `"ERC20"` +- Protocol `"protocol_data"` field (ERC20 only): `"platform"` - `"ETH"`, `"ETC"` or other Ethereum forks. `"contract_address"` - ERC20 token [checksummed](https://coincodex.com/article/2078/ethereum-address-checksum-explained/) smart contract address. + +| Parameter | Type | Description | +|------------------------------------------|---------|-------------| +| chain_id | integer | To find the EVM chain ID, see [Chainlist](https://chainlist.org/) | +| protocol.type | string | Platform / protocol - e.g `ETH` for Ethereum, `ERC20` for ERC20 tokens on the Ethereum network | +| protocol.protocol_data | object | Required for tokens only. | +| protocol.protocol_data.platform | string | The parent coin of the token's platform - e.g `MATIC` for PLG20 tokens | +| protocol.protocol_data.contract_address | string | **Must be mixed case** The indentifying hex string for the token's contract. Can be found on sites like [EthScan](https://etherscan.io/), [BscScan](https://bscscan.com/) & [PolygonScan](https://polygonscan.com/ | + + +### ERC20 token example + +```json + { + "coin": "USDC-ERC20", + "name": "usdc_erc20", + "fname": "USD Coin", + "rpcport": 80, + "mm2": 1, + "chain_id": 1, + "required_confirmations": 3, + "avg_blocktime": 0.25, + "protocol": { + "type": "ERC20", + "protocol_data": { + "platform": "ETH", + "contract_address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + } + } + } +``` + +### BEP20 token example + +```json + { + "coin": "USDC-BEP20", + "name": "usdc_bep20", + "fname": "USD Coin", + "rpcport": 80, + "mm2": 1, + "chain_id": 56, + "avg_blocktime": 0.05, + "required_confirmations": 3, + "protocol": { + "type": "ERC20", + "protocol_data": { + "platform": "BNB", + "contract_address": "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d" + } + } + }, +``` + +## 1d. QRC20 tokens + +QTUM & QRC20 tokens are a special case which also support all fields of UTXO specific config. + +```json + { + "coin": "QC-QRC20", + "name": "qtum", + "fname": "Qcash", + "rpcport": 3889, + "pubtype": 58, + "p2shtype": 50, + "wiftype": 128, + "segwit": true, + "txfee": 0, + "mm2": 1, + "required_confirmations": 3, + "mature_confirmations":500, + "avg_blocktime": 2.133, + "protocol": { + "type": "QRC20", + "protocol_data": { + "platform": "QTUM", + "contract_address": "0xf2033ede578e17fa6231047265010445bca8cf1c" + } + } + } +``` + +## 2. Icon file (required) + +- The icon file is required. +- Icon must be a .png format file. +- Dimensions of icon file is at least 128x128 pixels. +- Icon file name MUST be the coin/token ticker in **small letters** without protocl suffix - e.g. for KMD or KMD-BEP20, use `kmd.png`. +- Icon file location is [icons_original](https://github.com/KomodoPlatform/coins/tree/master/icons_original) folder. + + +## 3. Explorer URL (required, excluding tokens) + +- Tokens do not need this data, they will use the values for their parent coin. +- Explorer file name must be coin's ticker name in all **capital** letters. +- Explorer file name must not have any file extension. It is a file without any `.` extension. +- It must have a valid JSON array with at least one Explorer URL in it. Multiple explorer URLs are recommended - e.g. `["https://komodod.com/","https://kmd.explorer.dexstats.info/"]` +- Add the path suffixes for the explorer's address and transaction URLs in [explorer_paths.json](https://github.com/KomodoPlatform/coins/blob/master/explorers/explorer_paths.json) + + +## 4. Electrum Servers (Optional; Required for listing in Mobile GUIs) + +- Electrum file name must be coin's ticker name in all **capital** letters. +- Electrum file name must not have any file extension. It is a file without any `.` extension. +- It must be a valid JSON format as shown in the following example: +- Details of at least 2 Electrum servers must be provided. +- The address and port of electrum server are required. The address of electrum server can either be a DNS or an IP address. +- Protocol can be "SSL" or "TCP". For WebDEX (wasm) listings, SSL is required. +- Contact information must be provided in case the server admin needs to be contacted in emergency situations. Failing servers will result in an automatic delisting of your coin upon the next release of the AtomicDEX apps. +- The status of currently listed [ElectrumX](https://electrumx.readthedocs.io/en/latest/) servers is monitored via a public [API](https://electrum-status.dragonhound.info/api/v1/electrums_status) and [Dashboard](https://stats.kmd.io/atomicdex/electrum_status/). For help setting up Telegram or Discord alerts for your servers, join the `#dev-support` channel in the [Komodo Platform Discord](https://komodoplatform.com/discord). + + + +```JSON +[ + { + "url": "nmc.bitcoins.sk:50002", + "protocol": "SSL", + "disable_cert_verification": true, + "contact": [ + {"email": "electrum1_admin_email@example.com"}, + {"matrix": "@electrum1_admin:matrix.org"}, + {"skype": "example_username"}, + {"twitter": "example_username"}, + {"reddit": "example_username"}, + {"github": "example_username"}, + {"keybaseio": "example_username"} + ] + }, + { + "url": "electrum-nmc.le-space.de:50002", + "protocol": "SSL", + "disable_cert_verification": false, + "contact": [ + {"email": "electrum2_admin_email@example.com"} + ] + } +] +``` + + +## 5. Ethereum info file (Required for EVM-like platforms) + +- Ethereum file name must be coin's ticker name in all **capital** letters. +- Ethereum file name must not have any file extension. It is a file without any `.` extension. +- Swap contract address must be the address of [etomic swap smart contract](https://github.com/artemii235/etomic-swap) deployed to ETH network, [example](https://etherscan.io/address/0x8500afc0bc5214728082163326c2ff0c73f4a871). +- At least minimum 2 or more URLs of RPC nodes must be provided. +- Contact information must be provided in case the server admin needs to be contacted in urgent cases. It can be any contact information out of the examples provided. +- The RPC node URL can either be a DNS or an IP address with port. +- It must be a valid JSON format as shown in the following example: + +```JSON +{ + "swap_contract_address":"0x8500AFc0bc5214728082163326C2FF0C73f4a871", + "rpc_nodes": [ + { + "url":"http://ethnode.com:8545", + "contact": [ + {"email": "ethnode_admin_email@example.com"}, + {"matrix": "@ethnode_admin:matrix.org"}, + {"skype": "example_username"}, + {"twitter": "example_username"}, + {"reddit": "example_username"}, + {"github": "example_username"}, + {"keybaseio": "example_username"} + ] + }, + { + "url":"http://ethnode2.com:8545", + "contact": [ + {"email": "ethnode2_admin_email@example.com"} + ] + } + ] +} +``` + + +## 5. Forex, Nomics, CoinGecko & CoinPaprika Price IDs (optional) + +The API IDs are stored in json files within the `/api_ids` folder, and used to source price and chart date in AtomicDEX apps. + +For [CoinGecko](https://www.coingecko.com/en/coins/komodo) it is conveniently displayed on the right had side of a coins page as below - + + + +For [CoinPaprika](https://coinpaprika.com/coin/kmd-komodo/) it is the same as displayed in a coin's URL - + + + +For [Nomics](https://nomics.com/assets/kmd-komodo/widget) you can find it under the "widget" tab for a coin. + + + +For For Forex the API ID is the same as the [ISO 4217 currency code](https://en.wikipedia.org/wiki/ISO_4217). + +Add these IDs to their respective json file within the `/api_ids` folder in the format `"TICKER": "API_ID"` + + +## 6. Derivation Path + +The [BIP44 derivation path](https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki) is now required to ensure Heirarchical deterministic wallet functionality. The best source for this data is via [Satoshi Labs SLP-044](https://github.com/satoshilabs/slips/blob/master/slip-0044.md) + +## 7. Trezor coin name (optional) + +For Trezor compatibility, this field is required. You can find this value at [https://trezor.io/coins](https://trezor.io/coins). Not all coins are listed on this page by default, but if compatible can be found by searching the supported coins. The value is the name of the coin in larger black text (not the grey text in brackets). E.g. for the image below, the Trezor coin name would be `Qtum`. + + + +## 8. Successful swap confirmation + +The coin must have participated in a successful Atomic Swap using [AtomicDEX-API](https://github.com/KomodoPlatform/atomicDEX-API/) + +When submitting your coin addition request, please submit the URLs of the 5 transactions (`takerfee sent`, `maker payment`, `taker payment` and `taker payment spent`, `maker payment spent`) produced by successful swap in a new file inside the [swaps directory](swaps)- here's an [example for KMD-ETH](https://github.com/KomodoPlatform/coins/blob/master/swaps/KMD-ETH.md). This means that, before going through the further steps and submitting the information to this coins database repo, you would have performed a successful atomic swap. The further steps explain the expected files/values to be submitted. + +You can learn about performing an atomic swap from our documentation at [this link](https://developers.komodoplatform.com/basic-docs/atomicdex/atomicdex-tutorials/introduction-to-atomicdex.html) + +Activating a coin: [https://developers.komodoplatform.com/basic-docs/atomicdex-api-legacy/coin_activation.html](https://developers.komodoplatform.com/basic-docs/atomicdex-api-legacy/coin_activation.html) + +Walkthrough: [https://developers.komodoplatform.com/basic-docs/atomicdex/atomicdex-tutorials/atomicdex-walkthrough.html](https://developers.komodoplatform.com/basic-docs/atomicdex/atomicdex-tutorials/atomicdex-walkthrough.html) + +If you have any questions, please ask in the `#support` channel in [our Discord server](https://komodoplatform.com/discord) or you can get help from the team at coinintegration@komodoplatform.com or partners@komodplatform.com .