From 2ace6d33e2515fa03f1c05be828c3854e47833a7 Mon Sep 17 00:00:00 2001 From: "Vladimir N. Korotenko" Date: Sat, 15 Nov 2025 12:30:25 +0300 Subject: [PATCH] add parser to 1D format --- dm-cli.v3.html | 2065 +++++++++++++++++++++++++++++++++++++ dm-cli/Deals.cpp | 49 +- dm-cli/Deals.hpp | 2 +- dm-cli/dm-cli | Bin 3140992 -> 0 bytes dm-cli/test.cmd | 4 +- vc/dm-cli.vcxproj | 3 + vc/dm-cli.vcxproj.filters | 3 + 7 files changed, 2122 insertions(+), 4 deletions(-) create mode 100644 dm-cli.v3.html delete mode 100644 dm-cli/dm-cli diff --git a/dm-cli.v3.html b/dm-cli.v3.html new file mode 100644 index 0000000..8dfbc9c --- /dev/null +++ b/dm-cli.v3.html @@ -0,0 +1,2065 @@ + + + + + + + +ТЗ: CLI клиент для apostol-dm + + + + + + +
+
+

1. Введение

+
+
+

Приложение dm-cli - интерфейс командной строки для доступа к функциям модуля сделок (dm) сервиса обработки bitcoin платежей BitDeals. Приложение должно предоставлять доступ к основной функциональности dm через командную строку.

+
+
+

Ресурсы:

+
+
+ +
+
+
+
+

2. Общие требования

+
+
+
    +
  1. +

    В режиме работы --debug приложение должно дополнительно выводить данные API запросов и ответов.

    +
  2. +
  3. +

    Значение параметра --address приложения должно принимать IP адрес и порт, или URL путь, например https://testnet-dm2.bitdeals.org/dm/ .

    +
  4. +
+
+
+
+
+

3. Функции dm-cli

+
+
+

3.1. Документация по использованию

+
+
    +
  1. +

    Приложение должно выводить справку по использованию приложения по ключу -h или --help

    +
  2. +
  3. +

    Если переменная в значении: LANG=ru_RU.UTF-8, то справка должна быть на русском языке.

    +
    +

    +Пример сообщения 'dm-cli --help': +

    +
    +
    +

    На английском:

    +
    +
    +
    +
    Usage: dm-cli [global] <group> [<args>]
    +
    +Global options:
    +  --debug              print debug information, input and output API requests
    +  --address <ip:port>  address of the bitdeals dm, default: 127.0.0.1:4999
    +  --help               print condensed help for all subcommands
    +  --version            print version string
    +
    +    dm-cli account status <bitcoin_address>
    +        Show account data details
    +    dm-cli account update [options]
    +        Update your account data
    +
    +    dm-cli deal create
    +        Create a new deal
    +    dm-cli deal status
    +        Show deal data details
    +    dm-cli deal complete
    +        Complete deal
    +    dm-cli deal cancel
    +        Cancel deal
    +    dm-cli deal negative
    +        Leave negative feedback
    +
    +
    +
    +

    На русском:

    +
    +
    +
    +
    Использование: dm-cli [глобальные параметры] <группа> [<аргументы>]
    +
    +Глобальные параметры:
    +  --debug              выводить отладочную информацию, входные и выходные API-запросы
    +  --address <ip:port>  адрес модуля сделок (dm), по умолчанию: 127.0.0.1:4999
    +  --help               вывести краткую справку по всем подкомандам
    +  --version            вывести строку версии
    +
    +    dm-cli account status <биткоин адрес>
    +        Показать учётные данные аккаунта
    +    dm-cli account update [параметры]
    +        Изменить учётные данные аккаунта
    +
    +    dm-cli deal create
    +        Создать новую сделку
    +    dm-cli deal status
    +        Показать данные сделки
    +    dm-cli deal complete
    +        Завершить сделку
    +    dm-cli deal cancel
    +        Отменить сделку
    +    dm-cli deal negative
    +        Оставить негативный отзыв
    +
    +
    +
    +

    +
    +
  4. +
+
+
+
+

3.2. Запрос данных пользователей

+
+
    +
  1. +

    Запрос должен происходить в соответствии с синтаксисом:

    +
    +

    +Пример сообщения 'dm-cli account status --help': +

    +
    +
    +

    На английском:

    +
    +
    +
    +
    Usage: dm-cli account status [options] <bitcoin_address>
    +
    +    Show info about a bitdeals user.
    +
    +    -f|--feedbacks [p|n]      Show last 1K received feedbacks.
    +                              Use p or n to filter only positive or negative feedbacks.
    +    -i|--info                 Show user account details.
    +    -r|--rating               Show user rating information.
    +    -s|--status               Show user account status (default action).
    +
    +
    +
    +

    На русском:

    +
    +
    +
    +
    Использование: dm-cli account status [параметры] <биткоин адрес>
    +
    +    Показать информацию о пользователе bitdeals.
    +
    +    -f|--feedbacks [p|n]      Показать последнюю 1 тыс. полученных отзывов.
    +                              Используй p или n для фильтрации только позитивных или негативных отзывов.
    +    -i|--info                 Показать данные учётной записи.
    +    -r|--rating               Показать данные рейтинга.
    +    -s|--status               Показать статус пользователя (действие по умолчанию).
    +
    +
    +
    +

    +
    +
  2. +
  3. +

    Примеры входных и выходных данных.

    +
    +
      +
    1. +

      Запрос статуса (--status) пользователя mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp:

      +
      +
      +
      curl "https://testnet-dm.bitdeals.org/api/v1/account/status?address=mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp"
      +
      +
      +
      +

      +Пример ответа: +

      +
      +
      +
      +
      {
      +  "id": "c381f540d48c1d34",
      +  "action": "Status",
      +  "address": "mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp",
      +  "result": {
      +    "success": true,
      +    "message": "Open"
      +  },
      +  "payload": "PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IkJpdERlYWxzIFBheW1lbnQgU2VydmljZSI+CjwvaGVhZD4KPGJvZHk+CjxwcmU+SGVsbG8sIDxiPm1udW1IczlIUU1ydzJRMWlLTE5ueDlOekV4UzduTUxteXA8L2I+IQoKWW91ciBhY2NvdW50IHN0YXR1czogPGI+T3BlbjwvYj4KCi0tLS0tIEJJVENPSU4gUFVCTElDIEtFWSAtLS0tLQoKPGI+MDI0ZjIyNmNkMzdhYjdlNzY4ZGU3YjY4OTQ2ZDY2MWQwNjdlZjFkNThhMTgzMjU0MjI1YTRmOTFmNmFlODkxOGVlPC9iPgoKLS0tLS0gUEdQIFBVQkxJQyBLRVkgLS0tLS0KCjxiPnB1YiAgMTAyNFIvNDlkZmNjYjk3YjkwNzRjNiAyMDI1LTA4LTA0Cgp1aWQgQWNjb3VudF9VUkwgKGh0dHBzOi8vZXhhbXBsZS0zMjA4OTI4MTIzLmNvbSkKc2lnICBzaWcgICA0OWRmY2NiOTdiOTA3NGM2IDIwMjUtMDgtMDQgICAgICAgICAgICAgICAgICAgIAoKc3ViICAxMDI0Ui80MDYwZjlkNDdkMzgyZGUyIDIwMjUtMDgtMDQKc2lnIHNiaW5kICA0OWRmY2NiOTdiOTA3NGM2IDIwMjUtMDgtMDQgICAgICAgICAgICAgICAgICAgIAo8L2I+Ci0tLS0tIEFDQ09VTlQgVVJMIExJU1QgLS0tLS0KCjxhIGhyZWY9Imh0dHBzOi8vZXhhbXBsZS0zMjA4OTI4MTIzLmNvbSI+aHR0cHM6Ly9leGFtcGxlLTMyMDg5MjgxMjMuY29tPC9hPgoKLS0tLS0gVFJVU1RFRCBVUkwgTElTVCAtLS0tLQoKPGEgaHJlZj0iaHR0cDovLzE3MC43NS4xNzMuNzA6NDk5OSI+aHR0cDovLzE3MC43NS4xNzMuNzA6NDk5OTwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9wbGFjYXJkLnpyLWNvZGUuY29tIj5odHRwczovL3BsYWNhcmQuenItY29kZS5jb208L2E+CjxhIGhyZWY9Imh0dHBzOi8vdGVzdG5ldC5iaXRkZWFscy5vcmciPmh0dHBzOi8vdGVzdG5ldC5iaXRkZWFscy5vcmc8L2E+CjxhIGhyZWY9Imh0dHA6Ly9wbGFjYXJkLnpyLWNvZGUuY29tIj5odHRwOi8vcGxhY2FyZC56ci1jb2RlLmNvbTwvYT4KPGEgaHJlZj0iaHR0cDovL3Rlc3RuZXQtZG0uYml0ZGVhbHMub3JnIj5odHRwOi8vdGVzdG5ldC1kbS5iaXRkZWFscy5vcmc8L2E+CjxhIGhyZWY9Imh0dHBzOi8vdGVzdG5ldC1kbTIuYml0ZGVhbHMub3JnIj5odHRwczovL3Rlc3RuZXQtZG0yLmJpdGRlYWxzLm9yZzwvYT4KPGEgaHJlZj0iaHR0cDovL3Rlc3RuZXQtZG0yLmJpdGRlYWxzLm9yZyI+aHR0cDovL3Rlc3RuZXQtZG0yLmJpdGRlYWxzLm9yZzwvYT4KPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo0OTk5Ij5odHRwOi8vbG9jYWxob3N0OjQ5OTk8L2E+CjxhIGhyZWY9Imh0dHA6Ly90ZXN0bmV0LmJpdGRlYWxzLm9yZyI+aHR0cDovL3Rlc3RuZXQuYml0ZGVhbHMub3JnPC9hPgo8YSBocmVmPSJodHRwOi8vcGxhY2FyZC5iaXRkZWFscy5vcmciPmh0dHA6Ly9wbGFjYXJkLmJpdGRlYWxzLm9yZzwvYT4KPGEgaHJlZj0iaHR0cHM6Ly9wbGFjYXJkLmJpdGRlYWxzLm9yZyI+aHR0cHM6Ly9wbGFjYXJkLmJpdGRlYWxzLm9yZzwvYT4KPGEgaHJlZj0iaHR0cHM6Ly90ZXN0bmV0LWRtLmJpdGRlYWxzLm9yZyI+aHR0cHM6Ly90ZXN0bmV0LWRtLmJpdGRlYWxzLm9yZzwvYT4KPGEgaHJlZj0iaHR0cHM6Ly90ZXN0bmV0Mi5iaXRkZWFscy5vcmciPmh0dHBzOi8vdGVzdG5ldDIuYml0ZGVhbHMub3JnPC9hPgo8YSBocmVmPSJodHRwOi8vdGVzdG5ldDIuYml0ZGVhbHMub3JnIj5odHRwOi8vdGVzdG5ldDIuYml0ZGVhbHMub3JnPC9hPgo8YSBocmVmPSJodHRwczovL3BsYWNhcmQyLmJpdGRlYWxzLm9yZyI+aHR0cHM6Ly9wbGFjYXJkMi5iaXRkZWFscy5vcmc8L2E+CjxhIGhyZWY9Imh0dHA6Ly9wbGFjYXJkMi5iaXRkZWFscy5vcmciPmh0dHA6Ly9wbGFjYXJkMi5iaXRkZWFscy5vcmc8L2E+CjxhIGhyZWY9Imh0dHBzOi8vZXhhbXBsZS0zMjA4OTI4MTIzLmNvbSI+aHR0cHM6Ly9leGFtcGxlLTMyMDg5MjgxMjMuY29tPC9hPgoKCi0tLS0tClRoYW5rIHlvdSwKQml0RGVhbHMuPC9wcmU+CjwvYm9keT4KPC9odG1sPgo="
      +}
      +
      +
      +
      +
      +

      +
      +
    2. +
    3. +

      Запрос информации (--info) о пользователе mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC:

      +
      +
      +
      curl -X POST "https://testnet-dm2.bitdeals.org/api/v1/user/profile" \
      +    -H "Content-Type: application/json"
      +    -d '{"code":"mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC"}'
      +
      +
      +
      +

      +Пример ответа: +

      +
      +
      +
      +
      {
      +  "id": "65380112-e797-4041-8254-0c8878ea36e2",
      +  "userid": "fdbde2fe-d7c4-42d4-a6fd-39c58a17afac",
      +  "created": "2023-03-15T17:03:32.192766+03:00",
      +  "code": "mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC",
      +  "address": "mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC",
      +  "bitmessages": [
      +    "BM-2cWUG4jmW9CwKtNYv6nrJFTiNL4f8Ys8Dd"
      +  ],
      +  "module": "mynFyJJkRhsbB6y1Q5kTgDGckVz2m9NKH8",
      +  "btckey": "02128188a04564583a8540bcd584116d7de1d04dbbcc79c8fd5d45e6a1a65c7031",
      +  "pgpkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmI0EaByQKQEEAMfwUb7ErrEBDLkjYNwxFvzqdekC3+gR/GpyKOz55kNX/Cwm6ohS\nkNJGVlTR73pXSrQV0c14Dwzgf+HCBFamx1toOCW72GytX71aom2uXHLy8JOzc7bk\naQ+wLti0ghx+cdwvgRuJV5co2tlTxh87iariasP3Dgas4wtRrNvDcQNNABEBAAG0\nJEFjY291bnRfVVJMIChodHRwOi8vcmFuZG9tLXNpdGUuY29tKYjOBBMBCgA4FiEE\nnvbbPXqkDv91aLC/44t8noXtKDgFAmgckCkCGwMFCwkIBwMFFQoJCAsFFgIDAQAC\nHgECF4AACgkQ44t8noXtKDhovwP/eSVEE4234FPSAbI04DFSwt+TtwTqlFHV4O0d\nIzoGHNrQDB/jROugZtRsYR5mQtKbRuSSZTxZZikoJAufG3GBaq4JbDVsYQWRYl/G\ncxmOlS3u+qzjLCDKnn7VDDer+Ewbj2Cc4feH4eJe5vk7TOlXRAfPjV+Mm1gxTVUg\ncw44f624jQRoHJApAQQAu1u/UED5BYEblglb399KDyWHWRPSgM7yQvQHSUxUG4y9\nvzyDC303Hj238RI3AsYRF61EoriHlwAibf2d5LXwPpQrBuKyAzOPus3AIsVPqerK\naQB9poEpdHFr6qhDBumm1uHDKeFMhMcObI0Spz1Y5vUfJq5bMV3KGoYcxlac5bEA\nEQEAAYi2BBgBCgAgFiEEnvbbPXqkDv91aLC/44t8noXtKDgFAmgckCkCGwwACgkQ\n44t8noXtKDj1uwP+IS11c2N2dGLzpTHdujN1NVrvPxGur3lAxIidG57fGwK76RYm\nCrXws6SHORphBUw8nYzE1k9ZTOaZ4c/cNYYpDv6sxYqbFcco5WB1BnGUqtXUj4eK\n8vtje+VeZ+DOPmjUIEd3lMcTJo9sUXzLUxwiFIk89IGXSieOJ5QL+8M/M38=\n=4NLS\n-----END PGP PUBLIC KEY BLOCK-----",
      +  "urlaccount": [
      +    "https://testnet.bitdeals.org",
      +    "http://random-site.com"
      +  ],
      +  "urltrusted": [
      +    "https://testnet.bitdeals.org",
      +    "http://170.75.173.70:4999",
      +    "https://placard.zr-code.com",
      +    "http://testnet-dm.bitdeals.org:4999",
      +    "http://placard.zr-code.com",
      +    "http://testnet-dm.bitdeals.org",
      +    "https://testnet-dm2.bitdeals.org",
      +    "http://testnet-dm2.bitdeals.org",
      +    "http://testnet.bitdeals.org",
      +    "https://testnet-dm.bitdeals.org",
      +    "https://placard.bitdeals.org",
      +    "http://placard.bitdeals.org",
      +    "http://testnet2.bitdeals.org",
      +    "https://testnet2.bitdeals.org",
      +    "http://placard2.bitdeals.org",
      +    "https://placard2.bitdeals.org",
      +    "http://random-site.com"
      +  ],
      +  "seller": {
      +    "count": 11,
      +    "positive": 5
      +  },
      +  "customer": {
      +    "count": 604,
      +    "positive": 36
      +  },
      +  "state": "2565936d-6798-4035-b30d-9b1d388f40a6",
      +  "statecode": "enabled",
      +  "statelabel": "Open"
      +}
      +
      +
      +
      +

      +
      +
    4. +
    5. +

      Запрос списка отзывов (--feedbacks) пользователя mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC:

      +
      +
      +
      curl -X POST "https://testnet-dm2.bitdeals.org/api/v1/deal/feedback/list" \
      +    -H "Content-Type: application/json" \
      +    -d '{"search":[{"field":"sellercode","compare":"EQL","value":"mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC"}],"orderby":["date DESC"],"reclimit":1000,"recoffset":0}'
      +
      +
      +
      +

      +Пример ответа: +

      +
      +
      +
      +
      [
      +  {
      +    "deal": "d63350a1-8483-4c0f-87d2-8a4920f7bdba",
      +    "date": "2025-09-17T11:40:11",
      +    "sum": 0.002,
      +    "seller": "65380112-e797-4041-8254-0c8878ea36e2",
      +    "sellercode": "mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC",
      +    "customer": "65380112-e797-4041-8254-0c8878ea36e2",
      +    "customercode": "mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC",
      +    "leave_before": "2025-09-17T13:00:00",
      +    "status": null,
      +    "statustext": "none",
      +    "comments": "cancel deal test comment message 3",
      +    "refund": null
      +  },
      +  {
      +    "deal": "7e82e9c3-0e85-4635-8b53-6da7e541e6e3",
      +    "date": "2025-09-17T11:29:35",
      +    "sum": 0.002,
      +    "seller": "65380112-e797-4041-8254-0c8878ea36e2",
      +    "sellercode": "mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC",
      +    "customer": "65380112-e797-4041-8254-0c8878ea36e2",
      +    "customercode": "mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC",
      +    "leave_before": "2025-09-17T12:50:01",
      +    "status": -1,
      +    "statustext": "negative",
      +    "comments": "negative comment text for test",
      +    "refund": null
      +  },
      +  {
      +    "deal": "3f989f08-b5a0-4ceb-80a5-acd18a6559d4",
      +    "date": "2025-09-17T11:28:28",
      +    "sum": 0.002,
      +    "seller": "65380112-e797-4041-8254-0c8878ea36e2",
      +    "sellercode": "mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC",
      +    "customer": "65380112-e797-4041-8254-0c8878ea36e2",
      +    "customercode": "mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC",
      +    "leave_before": "2025-09-17T12:50:01",
      +    "status": 0,
      +    "statustext": "neutral",
      +    "comments": null,
      +    "refund": "50"
      +  }
      +]
      +
      +
      +
      +

      +
      +
    6. +
    +
    +
  4. +
  5. +

    Примеры вывода команд dm-cli account:

    +
    +

    +dm-cli account status mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp: +

    +
    +
    +
    +
    Hello, mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp!
    +
    +Your account status: Open
    +
    +----- BITCOIN PUBLIC KEY -----
    +
    +024f226cd37ab7e768de7b68946d661d067ef1d58a183254225a4f91f6ae8918ee
    +
    +----- PGP PUBLIC KEY -----
    +
    +pub  1024R/49dfccb97b9074c6 2025-08-04
    +
    +uid Account_URL (https://example-3208928123.com)
    +sig  sig   49dfccb97b9074c6 2025-08-04
    +
    +sub  1024R/4060f9d47d382de2 2025-08-04
    +sig sbind  49dfccb97b9074c6 2025-08-04
    +
    +----- ACCOUNT URL LIST -----
    +
    +https://example-3208928123.com
    +
    +----- TRUSTED URL LIST -----
    +
    +http://170.75.173.70:4999
    +https://placard.zr-code.com
    +https://testnet.bitdeals.org
    +http://placard.zr-code.com
    +http://testnet-dm.bitdeals.org
    +https://testnet-dm2.bitdeals.org
    +http://testnet-dm2.bitdeals.org
    +http://localhost:4999
    +http://testnet.bitdeals.org
    +http://placard.bitdeals.org
    +https://placard.bitdeals.org
    +https://testnet-dm.bitdeals.org
    +https://testnet2.bitdeals.org
    +http://testnet2.bitdeals.org
    +https://placard2.bitdeals.org
    +http://placard2.bitdeals.org
    +https://example-3208928123.com
    +
    +
    +-----
    +Thank you,
    +BitDeals.
    +
    +
    +
    +

    +
    +
    +

    +dm-cli account --info mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC: +

    +
    +
    +
    +
    bitcoin: mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC
    +btckey: 02128188a04564583a8540bcd584116d7de1d04dbbcc79c8fd5d45e6a1a65c7031
    +bitmessage: BM-2cWUG4jmW9CwKtNYv6nrJFTiNL4f8Ys8Dd
    +pgpkey: |
    +  -----BEGIN PGP PUBLIC KEY BLOCK-----
    +
    +  mI0EaByQKQEEAMfwUb7ErrEBDLkjYNwxFvzqdekC3+gR/GpyKOz55kNX/Cwm6ohS
    +  kNJGVlTR73pXSrQV0c14Dwzgf+HCBFamx1toOCW72GytX71aom2uXHLy8JOzc7bk
    +  aQ+wLti0ghx+cdwvgRuJV5co2tlTxh87iariasP3Dgas4wtRrNvDcQNNABEBAAG0
    +  JEFjY291bnRfVVJMIChodHRwOi8vcmFuZG9tLXNpdGUuY29tKYjOBBMBCgA4FiEE
    +  nvbbPXqkDv91aLC/44t8noXtKDgFAmgckCkCGwMFCwkIBwMFFQoJCAsFFgIDAQAC
    +  HgECF4AACgkQ44t8noXtKDhovwP/eSVEE4234FPSAbI04DFSwt+TtwTqlFHV4O0d
    +  IzoGHNrQDB/jROugZtRsYR5mQtKbRuSSZTxZZikoJAufG3GBaq4JbDVsYQWRYl/G
    +  cxmOlS3u+qzjLCDKnn7VDDer+Ewbj2Cc4feH4eJe5vk7TOlXRAfPjV+Mm1gxTVUg
    +  cw44f624jQRoHJApAQQAu1u/UED5BYEblglb399KDyWHWRPSgM7yQvQHSUxUG4y9
    +  vzyDC303Hj238RI3AsYRF61EoriHlwAibf2d5LXwPpQrBuKyAzOPus3AIsVPqerK
    +  aQB9poEpdHFr6qhDBumm1uHDKeFMhMcObI0Spz1Y5vUfJq5bMV3KGoYcxlac5bEA
    +  EQEAAYi2BBgBCgAgFiEEnvbbPXqkDv91aLC/44t8noXtKDgFAmgckCkCGwwACgkQ
    +  44t8noXtKDj1uwP+IS11c2N2dGLzpTHdujN1NVrvPxGur3lAxIidG57fGwK76RYm
    +  CrXws6SHORphBUw8nYzE1k9ZTOaZ4c/cNYYpDv6sxYqbFcco5WB1BnGUqtXUj4eK
    +  8vtje+VeZ+DOPmjUIEd3lMcTJo9sUXzLUxwiFIk89IGXSieOJ5QL+8M/M38=
    +  =4NLS
    +  -----END PGP PUBLIC KEY BLOCK-----
    +
    +
    +
    +

    +
    +
    +

    +dm-cli account --feedbacks p mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp: +

    +
    +
    +
    +
    - deal: ff5f337f-e0ab-4515-857f-3a0c8530dcd3
    +  date: '2025-10-05T15:29:23'
    +  statustext: positive
    +  comments: positive comment about the deal
    +- deal: b7657c83-1502-4a33-8d35-4317a8d5e086
    +  date: '2025-09-17T10:44:50'
    +  statustext: positive
    +  comments: null
    +- deal: 1a79222f-401c-4a73-8f3f-3f0184db3fbb
    +  date: '2025-08-04T10:42:36'
    +  statustext: positive
    +  comments: null
    +- deal: ecc50f4c-4477-4eee-84b7-f8b2ba3755a3
    +  date: '2025-08-04T08:42:46'
    +  statustext: positive
    +  comments: null
    +- deal: aa7ff721-8b15-42f4-8de0-a79bdf47fd55
    +  date: '2025-08-01T08:46:16'
    +  statustext: positive
    +  comments: null
    +- deal: 34010ce2-6775-474d-8316-3bbcea736d8e
    +  date: '2025-08-01T08:14:23'
    +  statustext: positive
    +  comments: null
    +
    +
    +
    +

    +
    +
    +

    +dm-cli account --rating mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC: +

    +
    +
    +
    +
    created: 2023-03-15
    +seller:
    +  count: 11
    +  positive: 5
    +customer:
    +  count: 604
    +  positive: 36
    +
    +
    +
    +

    +
    +
  6. +
+
+
+
+

3.3. Изменение учётных данных пользователя

+
+
    +
  1. +

    Запрос должен происходить в соответствии с синтаксисом:

    +
    +

    +Пример сообщения 'dm-cli account update --help': +

    +
    +
    +

    На английском:

    +
    +
    +
    +
    Usage: dm-cli account update [options] <bitcoin_address>
    +
    +    Update user account data.
    +
    +    To change the account data you should sign the current date and new user data
    +    with your bitcoin private key. For example, current date, new bitmessage, signature:
    +    2020-01-01
    +    BM-2cUuxYUFWLCrtpKRMdHCpU1QKEuFtHh7vu
    +    IEF1ysyhu8ps0m5xSJaZZg/5hBylmcWQQggkGO7yNN8iMf/EA2O287kxi58xCDDtxvdsC0TWqylVE5MT5CouamU=
    +
    +    -d|--date <yyyy-mm-dd>    Current date.
    +    -s|--signature <sig>      Bitcoin signature.
    +    -p|--pgp <pgp>            Set up an armored RSA pgp key.
    +    -u|--url [+/-]<url>       Add/remove an url to trusted list.
    +    -b|--bitmessage           Change bitmessage address.
    +
    +
    +
    +

    На русском:

    +
    +
    +
    +
    Использование: dm-cli account update [параметры] <биткоин адрес>
    +
    +    Изменить учётные данные пользователя.
    +
    +    Для изменения учётных данных вы должны подписать текущую дату и новые данные пользователя
    +    вашим приватным биткоин ключом. Например, текущая дата, новый битмессадж, подпись:
    +    2020-01-01
    +    BM-2cUuxYUFWLCrtpKRMdHCpU1QKEuFtHh7vu
    +    IEF1ysyhu8ps0m5xSJaZZg/5hBylmcWQQggkGO7yNN8iMf/EA2O287kxi58xCDDtxvdsC0TWqylVE5MT5CouamU=
    +
    +    -d|--date <yyyy-mm-dd>    Текущая дата.
    +    -s|--signature <sig>      Биткоин подпись.
    +    -p|--pgp <pgp>            Установить armored RSA pgp ключ.
    +    -u|--url [+/-]<url>       Добавить/удалить url в trusted список.
    +    -b|--bitmessage           Изменить битмессадж адрес.
    +
    +
    +
    +

    +
    +
  2. +
  3. +

    Примеры входных и выходных данных.

    +
    +
      +
    1. +

      Добавлиение url в trusted список пользователя mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp:

      +
      +
      +
      curl -X POST "https://testnet-dm2.bitdeals.org/api/v1/client/update" \
      +    -H "Content-Type: application/json" \
      +    -d '{
      +  "address": "mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp",
      +  "date": "2025-10-21",
      +  "url": [
      +    "https://testnet-dm2.bitdeals.org"
      +  ],
      +  "sign": "IAGHICUSCxUrcWTMSL9j94vRufb9l5nBckahT+RznlHMPx9LTPpDHsozxVyxkpjtgrhC8eCyJKNaOw8U/v56pL0="
      +}'
      +
      +
      +
      +

      +Пример ответа: +

      +
      +
      +
      +
      {
      +  "id": "2838be66674f610b06746deb3654a641cf25cc73cb",
      +  "action": "Update",
      +  "address": "mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp",
      +  "result": {
      +    "success": true,
      +    "message": "Account updated"
      +  },
      +  "payload": "PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IkJpdERlYWxzIFBheW1lbnQgU2VydmljZSI+CjwvaGVhZD4KPGJvZHk+CjxwcmU+SGVsbG8sIDxiPm1udW1IczlIUU1ydzJRMWlLTE5ueDlOekV4UzduTUxteXA8L2I+IQoKPGZvbnQgY29sb3I9IiMxNDVBMzIiPjxiPkFjY291bnQgdXBkYXRlZDwvYj48L2ZvbnQ+CgpBY3Rpb246IDxiPlVwZGF0ZTwvYj4KCkluIG1lc3NhZ2UgYm9keSBmb3VuZDoKClRoZSBzaWduYXR1cmUgaXMgPGZvbnQgY29sb3I9IiMxNDVBMzIiPjxiPnZhbGlkLjwvYj48L2ZvbnQ+CgpWZXJpZmljYXRpb24gZGF0ZTogPGI+WWVzPC9iPgpCaXRjb2luIHB1YmxpYyBrZXk6IDxiPk5vPC9iPgpQR1AgcHVibGljIGtleTogPGI+Tm88L2I+ClRydXN0ZWQgVVJMIGNvdW50OiA8Yj4xPC9iPgoKLS0tLS0KVGhhbmsgeW91LApCaXREZWFscy48L3ByZT4KPC9ib2R5Pgo8L2h0bWw+Cg=="
      +}
      +
      +
      +
      +

      +
      +
    2. +
    +
    +
  4. +
  5. +

    Пример вывода команды dm-cli account update:

    +
    +

    +dm-cli account update -d 2025-10-21 -s "IAGH…​pL0=" -u "https://testnet-dm2.bitdeals.org" mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp: +

    +
    +
    +
    +
    success: true
    +message: Account updated
    +
    +
    +
    +

    +
    +
  6. +
  7. +

    Команда должна производить изменение данных пользователя:

    +
    +
      +
    1. +

      PGP ключа

      +
    2. +
    3. +

      Списка Trusted URL

      +
    4. +
    5. +

      Bitmessage адреса

      +
    6. +
    +
    +
  8. +
+
+
+
+

3.4. Создание сделки

+
+
    +
  1. +

    Запрос должен происходить в соответствии с синтаксисом:

    +
    +

    +Пример сообщения 'dm-cli deal create --help': +

    +
    +
    +

    На английском:

    +
    +
    +
    +
    Usage: dm-cli deal create [options]
    +
    +    Create a new deal
    +
    +    [smhd] means seconds, minutes, hours, days.
    +    For example: --leave-before 2020-01-01, or --leave-before 10d.
    +
    +    -a|--at                   Deal site
    +    -s|--seller               Seller user in deal
    +    -c|--customer             Customer user in deal
    +    -t|--type [prepayment|postpayment]
    +                              Deal type
    +    -s|--sum                  Deal sum in BTC
    +    -l|--leave-before { <yyyy-mm-dd> [hh:mm:ss UTC] | <time>[smhd] }
    +                              Deal end date (deal duration); default: 14d
    +    -p|--pay { <yyyy-mm-dd> [hh:mm:ss UTC] | <time>[smhd] }
    +                              Time for make payment; default: 1d
    +
    +
    +
    +

    На русском:

    +
    +
    +
    +
    Использование: dm-cli deal create [параметры]
    +
    +    Создать новую сделку
    +
    +    [smhd] означает секунды, минуты, часы, дни.
    +    Например: --leave-before 2020-01-01, or --leave-before 10d.
    +
    +    -a|--at                   Сайт проведения сделки
    +    -s|--seller               Продавец в сделке
    +    -c|--customer             Покупатель в сделке
    +    -t|--type [prepayment|postpayment]
    +                              Тип сделки
    +    -s|--sum                  Сумма сделки в BTC
    +    -l|--leave-before { <гггг-мм-дд> [чч:мм:сс UTC] | <время>[smhd] }
    +                              Время окончания сделки (длительность сделки), по умолчанию: 14d
    +    -p|--pay { <гггг-мм-дд> [чч:мм:сс UTC] | <время>[smhd] }
    +                              Время для оплаты сделки; по умолчанию: 1d
    +
    +
    +
    +

    +
    +
  2. +
  3. +

    Примеры входных и выходных данных.

    +
    +
      +
    1. +

      Запрос создания сделки:

      +
      +
      +
      curl -X POST "https://testnet-dm2.bitdeals.org/api/v1/deal/create" \
      +    -H "Content-Type: application/json" \
      +    -d '{
      +  "at": "https://testnet-dm2.bitdeals.org",
      +  "type": "Prepayment",
      +  "seller": {
      +    "address": "mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp"
      +  },
      +  "customer": {
      +    "address": "mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC"
      +  },
      +  "payment": {
      +    "sum": "0.01000000"
      +  }
      +}'
      +
      +
      +
      +

      +Пример ответа: +

      +
      +
      +
      +
      {
      +  "id": "f38bfeeb1ddac852",
      +  "action": "Created",
      +  "address": "mynFyJJkRhsbB6y1Q5kTgDGckVz2m9NKH8",
      +  "deal": {
      +    "order": "Created",
      +    "type": "Prepayment",
      +    "code": "ae6d226b2fe5ce009f252e65fcf66fd079729ac8",
      +    "at": "https://testnet-dm2.bitdeals.org",
      +    "date": "2025-10-21 09:08:12 UTC",
      +    "salt": "343c82c2",
      +    "seller": {
      +      "address": "mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp",
      +      "rating": "0+, 32%"
      +    },
      +    "customer": {
      +      "address": "mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC",
      +      "rating": "0+, 45%"
      +    },
      +    "payment": {
      +      "address": "2N7gRqGakSZaowyqSHSULaPzp7Fy2KKUQQ7",
      +      "until": "2025-10-22 09:08:12 UTC",
      +      "sum": "0.01 tBTC"
      +    },
      +    "feedback": {
      +      "leave_before": "2025-11-04 09:08:12 UTC"
      +    }
      +  },
      +  "result": {
      +    "success": true,
      +    "message": "New deal created"
      +  },
      +  "payload": "LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQpIYXNoOiBTSEE1MTIKCmRlYWw6CiAgb3JkZXI6IENyZWF0ZQogIHR5cGU6IFByZXBheW1lbnQKICBhdDogaHR0cHM6Ly90ZXN0bmV0LWRtMi5iaXRkZWFscy5vcmcKICBkYXRlOiAyMDI1LTEwLTIxIDA5OjA4OjEyIFVUQwogIHNhbHQ6IDM0M2M4MmMyCiAgc2VsbGVyOgogICAgYWRkcmVzczogbW51bUhzOUhRTXJ3MlExaUtMTm54OU56RXhTN25NTG15cAogICAgcmF0aW5nOiAwKywgMzIlCiAgY3VzdG9tZXI6CiAgICBhZGRyZXNzOiBtcmFYeDdKcm1BbXVLeXBkSjF2c2VRQlh5U3NkUlpFNUFDCiAgICByYXRpbmc6IDArLCA0NSUKICBwYXltZW50OgogICAgYWRkcmVzczogMk43Z1JxR2FrU1phb3d5cVNIU1VMYVB6cDdGeTJLS1VRUTcKICAgIHVudGlsOiAyMDI1LTEwLTIyIDA5OjA4OjEyIFVUQwogICAgc3VtOiAwLjAxIHRCVEMKICBmZWVkYmFjazoKICAgIGxlYXZlLWJlZm9yZTogMjAyNS0xMS0wNCAwOTowODoxMiBVVEMKLS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0KVmVyc2lvbjogY2MKCndwd0VBUUVLQUFZRkFtajNUWUFBQ2drUURqa3UwOE9pdDFJR1NnUCtMQWR4aUYrNkpISFpDWHJaNlFHdHhZdTQKeGdGeXJub3FmQ3pxaU0xVlF1MDhsbERtUnZ1aFRMTDBQTUxxUGdXUUYvRTBKckt0T0d1YmRVYlBCaWpKbm04eApiVWJjczRaOEtIcjZOOERhRXdnOU9MQVNYbnpVRGVzMGhCUDJsNEViK1JwWmFRdjhUMUFUeW1aVEt3bjNtbTI5CjZoL0hLQnVHS0hXY1U2MG5nQ2c9Cj1kUXdGCi0tLS0tRU5EIFBHUCBTSUdOQVRVUkUtLS0tLQ=="
      +}
      +
      +
      +
      +

      +
      +
    2. +
    +
    +
  4. +
  5. +

    Пример вывода команды dm-cli deal create:

    +
    +

    +Пример вывода команды 'dm-cli deals create -t prepayment -s mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp -c mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC -s 0.01: +

    +
    +
    +
    +
    -----BEGIN PGP SIGNED MESSAGE-----
    +Hash: SHA512
    +
    +deal:
    +  order: Confirmed
    +  type: Prepayment
    +  at: https://testnet-dm2.bitdeals.org
    +  date: 2025-10-21 09:08:12 UTC
    +  salt: 343c82c2
    +  seller:
    +    address: mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp
    +    rating: 600+, 32%
    +  customer:
    +    address: mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC
    +    rating: 600+, 36%
    +  payment:
    +    address: 2N7gRqGakSZaowyqSHSULaPzp7Fy2KKUQQ7
    +    until: 2025-10-22 09:08:12 UTC
    +    sum: 0.01 tBTC
    +  feedback:
    +    leave-before: 2025-11-04 09:08:12 UTC
    +    status: None
    +-----BEGIN PGP SIGNATURE-----
    +Version: cc
    +
    +wpwEAQEKAAYFAmj3UBgACgkQDjku08Oit1JLogQA0PofMslTfBrNCKFfdlAgj/8A
    +03lXiHPRd36PVzaa8lK6tHmdfs0EFrp28InXLswfksXD/0Hj9SBKrDQz1qxwqXqZ
    +rGC1RiXqRpHxl++3/lx3AguPPX5QydjDEwKSA3lL2pnsnnqe2edqUttJzunz9LYy
    +mhdbFlS1jaFzO0w25Ww=
    +=1TmH
    +-----END PGP SIGNATURE-----
    +
    +
    +
    +

    +
    +
  6. +
  7. +

    Команда должна создавать сделку с учётом указанных параметров:

    +
    +
      +
    • +

      Место (сайт) проведения сделки [deal.at];

      +
    • +
    • +

      Стороны сделки [seller, customer];

      +
    • +
    • +

      Тип сделки [Prepayment, Postpayment];

      +
    • +
    • +

      Сумма сделки в BTC [payment.sum];

      +
    • +
    • +

      Длительность сделки [feedback.leave-before];

      +
    • +
    • +

      Время для оплаты сделки [payment.until];

      +
    • +
    +
    +
  8. +
+
+
+
+

3.5. Статус сделки

+
+
    +
  1. +

    Запрос должен происходить в соответствии с синтаксисом:

    +
    +

    +Пример сообщения 'dm-cli deal status --help': +

    +
    +
    +

    На английском:

    +
    +
    +
    +
    Usage: dm-cli deal status { <bitcoin_address>|<deal_code> }
    +
    +    Show a deal data details
    +
    +    To show a deal details use a bitcoin payment address or a deal code.
    +
    +    -i|--is-paid              Check a deal is Paid. Returns an exit code 0 if deal is Paid, or non-zero otherwise.
    +
    +
    +
    +

    На русском:

    +
    +
    +
    +
    Использование: dm-cli deal status { <биткоин адрес>|<код сделки> }
    +
    +    Показать детали сделки
    +
    +    Чтобы показать детали сделки используйте адрес оплаты сделки или код сделки.
    +
    +    -i|--is-paid              Проверить является ли сделка оплаченной. Возвращает exit code 0 если сделка является оплаченной, или не ноль в других случаях.
    +
    +
    +
    +

    +
    +
  2. +
  3. +

    Примеры входных и выходных данных.

    +
    +
      +
    1. +

      Запрос статуса сделки:

      +
      +
      +
      curl -X POST "https://testnet-dm2.bitdeals.org/api/v1/deal/status" \
      +    -H "Content-Type: application/json" \
      +    -d '{"address":"3e251d8fdcfa80adf5a3050064fc4ecb01d304d1"}'
      +
      +
      +
      +

      +Пример ответа: +

      +
      +
      +
      +
      {
      +  "id": "207022ea5d39ebb2",
      +  "action": "Status",
      +  "deal": {
      +    "order": "Confirmed",
      +    "type": "Prepayment",
      +    "code": "3e251d8fdcfa80adf5a3050064fc4ecb01d304d1",
      +    "at": "https://testnet-dm2.bitdeals.org",
      +    "date": "2025-10-21 09:02:11 UTC",
      +    "salt": "fd986961",
      +    "seller": {
      +      "address": "mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp",
      +      "rating": "0+, 32%"
      +    },
      +    "customer": {
      +      "address": "mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC",
      +      "rating": "0+, 36%"
      +    },
      +    "payment": {
      +      "address": "2NCBgmt37qw97ujZFjgmPEWuoYweR4BWT9g",
      +      "until": "2025-10-22 09:02:11 UTC",
      +      "sum": "0.01 tBTC"
      +    },
      +    "feedback": {
      +      "leave_before": "2025-11-04 09:02:11 UTC"
      +    }
      +  },
      +  "result": {
      +    "success": true,
      +    "message": "Deal status"
      +  },
      +  "payload": "LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQpIYXNoOiBTSEE1MTIKCmRlYWw6CiAgb3JkZXI6IENvbmZpcm1lZAogIHR5cGU6IFByZXBheW1lbnQKICBhdDogaHR0cHM6Ly90ZXN0bmV0LWRtMi5iaXRkZWFscy5vcmcKICBkYXRlOiAyMDI1LTEwLTIxIDA5OjAyOjExIFVUQwogIHNhbHQ6IGZkOTg2OTYxCiAgc2VsbGVyOgogICAgYWRkcmVzczogbW51bUhzOUhRTXJ3MlExaUtMTm54OU56RXhTN25NTG15cAogICAgcmF0aW5nOiA2MDArLCAzMiUKICBjdXN0b21lcjoKICAgIGFkZHJlc3M6IG1yYVh4N0pybUFtdUt5cGRKMXZzZVFCWHlTc2RSWkU1QUMKICAgIHJhdGluZzogNjAwKywgMzYlCiAgcGF5bWVudDoKICAgIGFkZHJlc3M6IDJOQ0JnbXQzN3F3OTd1alpGamdtUEVXdW9Zd2VSNEJXVDlnCiAgICB1bnRpbDogMjAyNS0xMC0yMiAwOTowMjoxMSBVVEMKICAgIHN1bTogMC4wMSB0QlRDCiAgZmVlZGJhY2s6CiAgICBsZWF2ZS1iZWZvcmU6IDIwMjUtMTEtMDQgMDk6MDI6MTEgVVRDCiAgICBzdGF0dXM6IE5vbmUKLS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0KVmVyc2lvbjogY2MKCndwd0VBUUVLQUFZRkFtajNZc0VBQ2drUURqa3UwOE9pdDFLWHpnUC9jd2YrcXI2NGFnSnFrdDBNd2orTzlhb0EKYXE4QndlQXdjc1B0ZEgzMGlhZGZ0c3RidlpmN3Rsc1ppVUxJbHhaTnBRR0VEdUp4czROcVdHTnhwaFlIQ2ZuMAp1T1VRRkZVeTJubmVEUElGSFJhM2I2TFMzQXd3ZGxkWjI1K1ozUmozOU5rQ3BCeGJEMWxWRGJQNWtoOEtwQlVwClNPMnNLRWZIT2hhOXBieHNvWU09Cj1SSUZOCi0tLS0tRU5EIFBHUCBTSUdOQVRVUkUtLS0tLQ=="
      +}
      +
      +
      +
      +

      +
      +
    2. +
    +
    +
  4. +
  5. +

    Пример вывода команды dm-cli deal status:

    +
    +

    +Пример вывода команды dm-cli deal status 2N7gRqGakSZaowyqSHSULaPzp7Fy2KKUQQ7: +

    +
    +
    +
    +
    -----BEGIN PGP SIGNED MESSAGE-----
    +Hash: SHA512
    +
    +deal:
    +  order: Create
    +  type: Prepayment
    +  at: https://testnet-dm2.bitdeals.org
    +  date: 2025-10-21 09:08:12 UTC
    +  salt: 343c82c2
    +  seller:
    +    address: mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp
    +    rating: 0+, 32%
    +  customer:
    +    address: mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC
    +    rating: 0+, 45%
    +  payment:
    +    address: 2N7gRqGakSZaowyqSHSULaPzp7Fy2KKUQQ7
    +    until: 2025-10-22 09:08:12 UTC
    +    sum: 0.01 tBTC
    +  feedback:
    +    leave-before: 2025-11-04 09:08:12 UTC
    +-----BEGIN PGP SIGNATURE-----
    +Version: cc
    +
    +wpwEAQEKAAYFAmj3TYAACgkQDjku08Oit1IGSgP+LAdxiF+6JHHZCXrZ6QGtxYu4
    +xgFyrnoqfCzqiM1VQu08llDmRvuhTLL0PMLqPgWQF/E0JrKtOGubdUbPBijJnm8x
    +bUbcs4Z8KHr6N8DaEwg9OLASXnzUDes0hBP2l4Eb+RpZaQv8T1ATymZTKwn3mm29
    +6h/HKBuGKHWcU60ngCg=
    +=dQwF
    +-----END PGP SIGNATURE-----
    +
    +
    +
    +

    +
    +
  6. +
  7. +

    Проверка --is-paid должна проверять состояние оплаты сделки на основе полученного текста деталей сделки. Для order: Paid, order: Completed, order: Executed - сделка оплачена, соответсвенно, exit code команды должен быть равен 0.

    +
  8. +
+
+
+
+

3.6. Завершение сделки

+
+
    +
  1. +

    Запрос должен происходить в соответствии с синтаксисом:

    +
    +

    +Пример сообщения 'dm-cli deal complete --help': +

    +
    +
    +

    На английском:

    +
    +
    +
    +
    Usage: dm-cli deal complete [options] { <bitcoin_address>|<deal_code> }
    +
    +    Complete a deal
    +
    +    -p|--positive             Complete deal with positive feedback. (default action)
    +    -r|--refund <num>         Refund % number of a deal sum to the customer. Format: 100.00[%]
    +
    +
    +
    +

    На русском:

    +
    +
    +
    +
    Использование: dm-cli deal complete [параметры] { <биткоин адес>|<код сделки> }
    +
    +    Завершить сделку
    +
    +    -p|--positive             Завершить сделку с позитивным отзывом. (действие по умолчанию)
    +    -r|--refund <num>         Возврат % от суммы сделки покупателю. Формат: 100.00[%]
    +
    +
    +
    +

    +
    +
  2. +
  3. +

    Примеры входных и выходных данных.

    +
    +
      +
    1. +

      Запрос завершения сделки:

      +
      +
      +
      curl -X POST "https://testnet-dm2.bitdeals.org/api/v1/deal/complete" \
      +    -H "Content-Type: application/json" \
      +    -d '{
      +  "order": "Paid",
      +  "type": "Postpayment",
      +  "code": "d87cc05dd42bf4fb6cc5d231388a254de94b787a",
      +  "at": "https://testnet-dm2.bitdeals.org",
      +  "date": "2025-10-21 11:36:26 UTC",
      +  "salt": "8f489443",
      +  "seller": {
      +    "address": "mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp",
      +    "rating": "600+, 32%"
      +  },
      +  "customer": {
      +    "address": "mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC",
      +    "rating": "600+, 36%"
      +  },
      +  "payment": {
      +    "address": "2Mvh1UozwwUwuFcmeCqQm7UEKAxnV4ANhAS",
      +    "until": "2025-10-22 11:36:26 UTC",
      +    "sum": "0.01 tBTC"
      +  },
      +  "feedback": {
      +    "leave_before": "2025-11-04 11:36:26 UTC",
      +    "status": "Neutral",
      +    "refund": 45
      +  }
      +}'
      +
      +
      +
      +

      +Пример ответа: +

      +
      +
      +
      +
      {
      +  "id": "f1c94f5a62e005b4",
      +  "action": "Complete",
      +  "deal": {
      +    "order": "Complete",
      +    "type": "Postpayment",
      +    "code": "d87cc05dd42bf4fb6cc5d231388a254de94b787a",
      +    "at": "https://testnet-dm2.bitdeals.org",
      +    "date": "2025-10-21 11:36:26 UTC",
      +    "salt": "8f489443",
      +    "seller": {
      +      "address": "mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp",
      +      "rating": "0+, 32%"
      +    },
      +    "customer": {
      +      "address": "mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC",
      +      "rating": "0+, 36%"
      +    },
      +    "payment": {
      +      "address": "2Mvh1UozwwUwuFcmeCqQm7UEKAxnV4ANhAS",
      +      "until": "2025-10-22 11:36:26 UTC",
      +      "sum": "0.01 tBTC"
      +    },
      +    "feedback": {
      +      "leave_before": "2025-11-04 11:36:26 UTC",
      +      "status": "Neutral"
      +    }
      +  },
      +  "result": {
      +    "success": true,
      +    "message": "Completion command accepted"
      +  },
      +  "payload": "CgotLS0tLSBSRVBPUlQgLS0tLS0KClBHUCBzaWduYXR1cmU6IDxmb250IGNvbG9yPSIjMTQ1QTMyIj48Yj52YWxpZC4KPC9iPjwvZm9udD5Nb2R1bGU6IG15bkZ5SkprUmhzYkI2eTFRNWtUZ0RHY2tWejJtOU5LSDgKCkZlZTogMSU="
      +}
      +
      +
      +
      +

      +
      +
    2. +
    +
    +
  4. +
  5. +

    Пример вывода команды dm-cli deal complete:

    +
    +

    +Пример вывода команды dm-cli deal complete -r 45 2Mvh1UozwwUwuFcmeCqQm7UEKAxnV4ANhAS: +

    +
    +
    +
    +
    success: true
    +message: Completion command accepted
    +
    +
    +
    +

    +
    +
  6. +
+
+
+
+

3.7. Отмена сделки

+
+
    +
  1. +

    Запрос должен происходить в соответствии с синтаксисом:

    +
    +

    +Пример сообщения 'dm-cli deal cancel --help': +

    +
    +
    +

    На английском:

    +
    +
    +
    +
    Usage: dm-cli deal cancel [options] <bitcoin_address>
    +
    +    Cancel a deal
    +
    +    To cancel a deal you should sign the deal payment address and feeback text message
    +    with the seller bitcoin private key. For example, address, feedback, signature:
    +    2NEVoXnRgUeb3j17s7pP6DoFHBVHMb94gF5
    +    seller random cancel reason text
    +    IEOGJ5q/a2cWJPMosQmCHNN6RsXF8Xy/UgaazIoY2i5udbw/v38g1/PdWs451dvFr9Iq/Bq5YL2YdpUFTuijQ60=
    +
    +    -m|--message <text>       Deal cancel reason text message
    +    -s|--signature <sig>      Bitcoin signature.
    +
    +
    +
    +

    На русском:

    +
    +
    +
    +
    Использование: dm-cli deal cancel [параметры] <биткоин адрес>
    +
    +    Отменить сделку
    +
    +    Для отмены сделки вы должны подписать адрес оплаты сделки и текст отзыва биткоин
    +    ключом продавца. Например, адрес, отзыв, подпись:
    +    2NEVoXnRgUeb3j17s7pP6DoFHBVHMb94gF5
    +    seller random cancel reason text
    +    IEOGJ5q/a2cWJPMosQmCHNN6RsXF8Xy/UgaazIoY2i5udbw/v38g1/PdWs451dvFr9Iq/Bq5YL2YdpUFTuijQ60=
    +
    +    -m|--message <text>       Текст сообщения с причино отмены сделки
    +    -s|--signature <sig>      Биткоин подпись.
    +
    +
    +
    +

    +
    +
  2. +
  3. +

    Примеры входных и выходных данных.

    +
    +
      +
    1. +

      Запрос завершения сделки:

      +
      +
      +
      curl --location 'https://testnet-dm.bitdeals.org/api/v1/deal/cancel?server=https%3A%2F%2Ftestnet.bitdeals.org' \
      +--header 'Content-Type: application/json' \
      +--data '{
      +    "type": "Postpayment",
      +    "at": "https://testnet-dm2.bitdeals.org",
      +    "date": "2025-10-26 10:14:57 UTC",
      +    "salt": "1e8601eb",
      +    "seller": {
      +        "address": "mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp",
      +        "signature": "H2zwEgbCKviTyKKRsQ6AlCVq51rgwkz3OMBAdfQTlJN6NFlqGsxdxmAk7EMb0AWgr9z0cqRoZL7VdEscB/M0lB8="
      +    },
      +    "customer": {
      +        "address": "mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC"
      +    },
      +    "payment": {
      +        "address": "2NDkN9PWdvf8T3AFe57vDsQX9qeJG5Y5iJW",
      +        "until": "2025-10-27 10:14:57 UTC",
      +        "sum": "0.002 tBTC"
      +    },
      +    "feedback": {
      +        "leave-before": "2025-11-09 10:14:57 UTC",
      +        "comments": "cancel_test2"
      +    }
      +}'
      +
      +
      +
      +

      +Пример ответа: +

      +
      +
      +
      +
      {
      +  "id": "2c26dd8dba7f0a73",
      +  "action": "Cancelled",
      +  "address": "mynFyJJkRhsbB6y1Q5kTgDGckVz2m9NKH8",
      +  "deal": {
      +    "order": "Cancelled",
      +    "type": "Postpayment",
      +    "code": "5a37041f1be8111d0379c47b1a92aff59075014c",
      +    "at": "https://testnet-dm2.     bitdeals.org",
      +    "date": "2025-10-26 10:14:57 UTC",
      +    "salt": "1e8601eb",
      +    "seller": {
      +      "address": "mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp",
      +      "rating": "0, 0%"
      +    },
      +    "customer": {
      +      "address": "mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC",
      +      "rating": "0, 0%"
      +    },
      +    "payment": {
      +      "address": "2NDkN9PWdvf8T3AFe57vDsQX9qeJG5Y5iJW",
      +      "until": "2025-10-27 10:14:57 UTC",
      +      "sum": "0.002 tBTC"
      +    },
      +    "feedback": {
      +      "leave_before": "2025-11-09 10:14:57 UTC",
      +      "status": "Positive",
      +      "comments": "cancel_test2"
      +    }
      +  },
      +  "result": {
      +    "success": true,
      +    "message": "Deal cancelled"
      +  },
      +  "payload": "CgotLS0tLSBSRVBPUlQgLS0tLS0KClBHUCBzaWduYXR1cmU6IDxmb250IGNvbG9yPSIjMTQ1QTMyIj48Yj52YWxpZC4KPC9iPjwvZm9udD5Nb2R1bGU6IG15bkZ5SkprUmhzYkI2eTFRNWtUZ0RHY2tWejJtOU5LSDgKCkZlZTogMSU="
      +}
      +
      +
      +
      +

      +
      +
    2. +
    +
    +
  4. +
  5. +

    Пример вывода команды dm-cli deal cancel:

    +
    +

    +Пример вывода команды dm-cli deal cancel -m "Cancellation comments" -s "CgoL…​MSU=" 2Mt7UW5RqXUaEN7Y93jo67ZgixcLNPDgvvk: +

    +
    +
    +
    +
    success: true
    +message: Deal cancelled
    +
    +
    +
    +

    +
    +
  6. +
+
+
+
+

3.8. Оставление негативного отзыва

+
+
    +
  1. +

    Запрос должен происходить в соответствии с синтаксисом:

    +
    +

    +Пример сообщения 'dm-cli deal negative --help': +

    +
    +
    +

    На английском:

    +
    +
    +
    +
    Usage: dm-cli deal negative [options] <bitcoin_address>
    +
    +    Leave a negative feedback
    +
    +    To leave a negative feedback you should sign the deal payment address and feeback text message
    +    with the customer bitcoin private key. For example, address, feedback, signature:
    +    2NEVoXnRgUeb3j17s7pP6DoFHBVHMb94gF5
    +    customer random feedback text
    +    H1u44C5cyEeKjHqnNnn09B8mIRMdqgR8PD9AeF8mv+cCEqM9HPkcWLrc8a/v2po2YmXJSeya6uy0XaLnmmmO/1o=
    +
    +    -m|--message <text>       Deal feedback text message
    +    -s|--signature <sig>      Bitcoin signature.
    +
    +
    +
    +

    На русском:

    +
    +
    +
    +
    Использование: dm-cli deal negative [options] <биткоин адрес>
    +
    +    Оставить негативный отзыв
    +
    +    Для оставления негативного отзыва ва должны подписать адрес оплаты сделки и текст отзыва биткоин
    +    ключом покупателя. Например, адрес, отзыв, подпись:
    +    2NEVoXnRgUeb3j17s7pP6DoFHBVHMb94gF5
    +    customer random feedback text
    +    H1u44C5cyEeKjHqnNnn09B8mIRMdqgR8PD9AeF8mv+cCEqM9HPkcWLrc8a/v2po2YmXJSeya6uy0XaLnmmmO/1o=
    +
    +    -m|--message <text>       Текст сообщения отзыва
    +    -s|--signature <sig>      Биткоин подпись.
    +
    +
    +
    +

    +
    +
  2. +
  3. +

    Примеры входных и выходных данных.

    +
    +
      +
    1. +

      Запрос завершения сделки:

      +
      +
      +
      curl --location 'https://testnet-dm2.bitdeals.org/api/v1/deal/feedback?server=https%3A%2F%2Ftestnet.bitdeals.org' \
      +--header 'Content-Type: application/json' \
      +--data '{
      +    "order": "feedback",
      +    "type": "Postpayment",
      +    "at": "https://testnet-dm2.bitdeals.org",
      +    "date": "2025-10-25 13:09:18 UTC",
      +    "salt": "5002a940",
      +    "seller": {
      +        "address": "mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp"
      +    },
      +    "customer": {
      +        "address": "mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC",
      +        "signature": "IDIhQFOpXH6emO1SM9jIBF85JHianacR6qMwy4VNhHMWOUzvqHsWg0lvN3mQJMMl9/tl37Aa97kRZHr7BIS1sH4="
      +    },
      +    "payment": {
      +        "address": "2NB9KhkYhu1d5aGJBUhnUnryJsGpreWMbaY",
      +        "until": "2025-10-26 13:09:18 UTC",
      +        "sum": "0.002 tBTC"
      +    },
      +    "feedback": {
      +        "leave-before": "2025-11-08 13:09:18 UTC",
      +        "comments": "Negative."
      +    }
      +}'
      +
      +
      +
      +

      +Пример ответа: +

      +
      +
      +
      +
      {
      +    "id": "507eed6345dc9535",
      +    "action": "Complete",
      +    "address": "mynFyJJkRhsbB6y1Q5kTgDGckVz2m9NKH8",
      +    "deal": {
      +        "order": "Complete",
      +        "type": "Postpayment",
      +        "code": "da26324b7ac1aecb36343d3004efb6c5b774eaa8",
      +        "at": "https://testnet-dm2.bitdeals.org",
      +        "date": "2025-10-25 13:09:18 UTC",
      +        "salt": "5002a940",
      +        "seller": {
      +            "address": "mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp",
      +            "rating": "0, 0%"
      +        },
      +        "customer": {
      +            "address": "mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC",
      +            "rating": "0, 0%"
      +        },
      +        "payment": {
      +            "address": "2NB9KhkYhu1d5aGJBUhnUnryJsGpreWMbaY",
      +            "until": "2025-10-26 13:09:18 UTC",
      +            "sum": "0.002 tBTC"
      +        },
      +        "feedback": {
      +            "leave_before": "2025-11-08 13:09:18 UTC",
      +            "status": "Negative",
      +            "comments": "Negative."
      +        }
      +    },
      +    "result": {
      +        "success": true,
      +        "message": "Completion command accepted"
      +    },
      +    "payload": "CgotLS0tLSBSRVBPUlQgLS0tLS0KClBHUCBzaWduYXR1cmU6IDxmb250IGNvbG9yPSIjMTQ1QTMyIj48Yj52YWxpZC4KPC9iPjwvZm9udD5Nb2R1bGU6IG15bkZ5SkprUmhzYkI2eTFRNWtUZ0RHY2tWejJtOU5LSDgKCkZlZTogMSU="
      +}
      +
      +
      +
      +

      +
      +
    2. +
    +
    +
  4. +
  5. +

    Пример вывода команды dm-cli deal negative:

    +
    +

    +Пример вывода команды dm-cli deal negative: +

    +
    +
    +
    +
    success: true
    +message: Completion command accepted
    +
    +
    +
    +

    +
    +
  6. +
  7. +

    В результате исполнения команды, указанная сделка должна получить негативный отзыв (status: Negative).

    +
  8. +
+
+
+
+
+
+ + \ No newline at end of file diff --git a/dm-cli/Deals.cpp b/dm-cli/Deals.cpp index b42cdd9..53e9487 100644 --- a/dm-cli/Deals.cpp +++ b/dm-cli/Deals.cpp @@ -10,6 +10,7 @@ #include "cleanHtml.h" #include #include +#include using namespace std; @@ -53,7 +54,7 @@ int Deals::HelpDealNegative() const PrintFile(DEAL_NEGATIVE_EN); return 0; } -Deals::Deals(const InputParser &parser, const bool isRussian, const string address, bool isDebug) +Deals::Deals(const InputParser& parser, const bool isRussian, const string address, bool isDebug) { this->parser = parser; this->isRussian = isRussian; @@ -131,6 +132,7 @@ int Deals::Create() } else { + pay = GetDate(pay); string untl(",\"until\": \""); untl.append(pay); untl.append("\""); @@ -144,7 +146,7 @@ int Deals::Create() } else { - + leave_before = GetDate(leave_before); string untl(",\"feedback\": {\"leave-before\": \""); untl.append(leave_before); untl.append("\"}"); @@ -168,6 +170,49 @@ int Deals::Create() return 0; } +string Deals::GetDate(const string date) { + string buffer = date; + /* + -p|--pay { [hh:mm:ss UTC] |