Files
dm-cli/dm-cli.v2.html
Vladimir N. Korotenko 57b6611085 Initial
2025-11-10 12:30:48 +03:00

1811 lines
121 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 2.0.20">
<title>ТЗ: CLI клиент для apostol-dm</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
<style>
/*! Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
/* Uncomment the following line when using as a custom stylesheet */
/* @import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"; */
html{font-family:sans-serif;-webkit-text-size-adjust:100%}
a{background:none}
a:focus{outline:thin dotted}
a:active,a:hover{outline:0}
h1{font-size:2em;margin:.67em 0}
b,strong{font-weight:bold}
abbr{font-size:.9em}
abbr[title]{cursor:help;border-bottom:1px dotted #dddddf;text-decoration:none}
dfn{font-style:italic}
hr{height:0}
mark{background:#ff0;color:#000}
code,kbd,pre,samp{font-family:monospace;font-size:1em}
pre{white-space:pre-wrap}
q{quotes:"\201C" "\201D" "\2018" "\2019"}
small{font-size:80%}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
sup{top:-.5em}
sub{bottom:-.25em}
img{border:0}
svg:not(:root){overflow:hidden}
figure{margin:0}
audio,video{display:inline-block}
audio:not([controls]){display:none;height:0}
fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
legend{border:0;padding:0}
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
button,input{line-height:normal}
button,select{text-transform:none}
button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}
button[disabled],html input[disabled]{cursor:default}
input[type=checkbox],input[type=radio]{padding:0}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
textarea{overflow:auto;vertical-align:top}
table{border-collapse:collapse;border-spacing:0}
*,::before,::after{box-sizing:border-box}
html,body{font-size:100%}
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;line-height:1;position:relative;cursor:auto;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
a:hover{cursor:pointer}
img,object,embed{max-width:100%;height:auto}
object,embed{height:100%}
img{-ms-interpolation-mode:bicubic}
.left{float:left!important}
.right{float:right!important}
.text-left{text-align:left!important}
.text-right{text-align:right!important}
.text-center{text-align:center!important}
.text-justify{text-align:justify!important}
.hide{display:none}
img,object,svg{display:inline-block;vertical-align:middle}
textarea{height:auto;min-height:50px}
select{width:100%}
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
a{color:#2156a5;text-decoration:underline;line-height:inherit}
a:hover,a:focus{color:#1d4b8f}
a img{border:0}
p{line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
p aside{font-size:.875em;line-height:1.35;font-style:italic}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
h1{font-size:2.125em}
h2{font-size:1.6875em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
h4,h5{font-size:1.125em}
h6{font-size:1em}
hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em}
em,i{font-style:italic;line-height:inherit}
strong,b{font-weight:bold;line-height:inherit}
small{font-size:60%;line-height:inherit}
code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
ul,ol{margin-left:1.5em}
ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0}
ul.circle{list-style-type:circle}
ul.disc{list-style-type:disc}
ul.square{list-style-type:square}
ul.circle ul:not([class]),ul.disc ul:not([class]),ul.square ul:not([class]){list-style:inherit}
ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
dl dt{margin-bottom:.3125em;font-weight:bold}
dl dd{margin-bottom:1.25em}
blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
h1{font-size:2.75em}
h2{font-size:2.3125em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
h4{font-size:1.4375em}}
table{background:#fff;margin-bottom:1.25em;border:1px solid #dedede;word-wrap:normal}
table thead,table tfoot{background:#f7f8f7}
table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
table tr.even,table tr.alt{background:#f8f8f7}
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
.center{margin-left:auto;margin-right:auto}
.stretch{width:100%}
.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
.clearfix::after,.float-group::after{clear:both}
:not(pre).nobreak{word-wrap:normal}
:not(pre).nowrap{white-space:nowrap}
:not(pre).pre-wrap{white-space:pre-wrap}
:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
pre>code{display:block}
pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
em em{font-style:normal}
strong strong{font-weight:400}
.keyseq{color:rgba(51,51,51,.8)}
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.2),inset 0 0 0 .1em #fff;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
.keyseq kbd:first-child{margin-left:0}
.keyseq kbd:last-child{margin-right:0}
.menuseq,.menuref{color:#000}
.menuseq b:not(.caret),.menuref{font-weight:inherit}
.menuseq{word-spacing:-.02em}
.menuseq b.caret{font-size:1.25em;line-height:.8}
.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
b.button::before{content:"[";padding:0 3px 0 2px}
b.button::after{content:"]";padding:0 2px 0 3px}
p a>code:hover{color:rgba(0,0,0,.9)}
#header,#content,#footnotes,#footer{width:100%;margin:0 auto;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
#content{margin-top:1.25em}
#content::before{content:none}
#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:flex;flex-flow:row wrap}
#header .details span:first-child{margin-left:-.125em}
#header .details span.email a{color:rgba(0,0,0,.85)}
#header .details br{display:none}
#header .details br+span::before{content:"\00a0\2013\00a0"}
#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
#header .details br+span#revremark::before{content:"\00a0|\00a0"}
#header #revnumber{text-transform:capitalize}
#header #revnumber::after{content:"\00a0"}
#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
#toc>ul{margin-left:.125em}
#toc ul.sectlevel0>li>a{font-style:italic}
#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
#toc li{line-height:1.3334;margin-top:.3334em}
#toc a{text-decoration:none}
#toc a:active{text-decoration:underline}
#toctitle{color:#7a2518;font-size:1.2em}
@media screen and (min-width:768px){#toctitle{font-size:1.375em}
body.toc2{padding-left:15em;padding-right:0}
#toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
#toc.toc2>ul{font-size:.9em;margin-bottom:0}
#toc.toc2 ul ul{margin-left:0;padding-left:1em}
#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
body.toc2.toc-right{padding-left:0;padding-right:15em}
body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
#toc.toc2{width:20em}
#toc.toc2 #toctitle{font-size:1.375em}
#toc.toc2>ul{font-size:.95em}
#toc.toc2 ul ul{padding-left:1.25em}
body.toc2.toc-right{padding-left:0;padding-right:20em}}
#content #toc{border:1px solid #e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;border-radius:4px}
#content #toc>:first-child{margin-top:0}
#content #toc>:last-child{margin-bottom:0}
#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
#footer-text{color:hsla(0,0%,100%,.8);line-height:1.44}
#content{margin-bottom:.625em}
.sect1{padding-bottom:.625em}
@media screen and (min-width:768px){#content{margin-bottom:1.25em}
.sect1{padding-bottom:1.25em}}
.sect1:last-child{padding-bottom:0}
.sect1+.sect1{border-top:1px solid #e7e7e9}
#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
details{margin-left:1.25rem}
details>summary{cursor:pointer;display:block;position:relative;line-height:1.6;margin-bottom:.625rem;outline:none;-webkit-tap-highlight-color:transparent}
details>summary::-webkit-details-marker{display:none}
details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.5em;left:-1.25rem;transform:translateX(15%)}
details[open]>summary::before{border:solid transparent;border-top:solid;border-width:.5em .3em 0;transform:translateY(15%)}
details>summary::after{content:"";width:1.25rem;height:1em;position:absolute;top:.3em;left:-1.25rem}
.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
.paragraph.lead>p,#preamble>.sectionbody>[class=paragraph]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
.admonitionblock>table td.icon{text-align:center;width:80px}
.admonitionblock>table td.icon img{max-width:none}
.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
.exampleblock>.content{border:1px solid #e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;border-radius:4px}
.sidebarblock{border:1px solid #dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;border-radius:4px}
.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
.exampleblock>.content>:first-child,.sidebarblock>.content>:first-child{margin-top:0}
.exampleblock>.content>:last-child,.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
.literalblock pre,.listingblock>.content>pre{border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
@media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
@media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
.literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class=highlight],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
.literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
.listingblock>.content{position:relative}
.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5}
.listingblock:hover code[data-lang]::before{display:block}
.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
.listingblock pre.highlightjs{padding:0}
.listingblock pre.highlightjs>code{padding:1em;border-radius:4px}
.listingblock pre.prettyprint{border-width:0}
.prettyprint{background:#f7f7f8}
pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
pre.prettyprint li code[data-lang]::before{opacity:1}
pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
table.linenotable td.code{padding-left:.75em}
table.linenotable td.linenos,pre.pygments .linenos{border-right:1px solid;opacity:.35;padding-right:.5em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
pre.pygments span.linenos{display:inline-block;margin-right:.75em}
.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
.quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em}
.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
.quoteblock blockquote{margin:0;padding:0;border:0}
.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
.verseblock{margin:0 1em 1.25em}
.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans-serif;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
.verseblock pre strong{font-weight:400}
.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
.quoteblock .attribution br,.verseblock .attribution br{display:none}
.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
.quoteblock.abstract{margin:0 1em 1.25em;display:block}
.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
.quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
.quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
p.tableblock:last-child{margin-bottom:0}
td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
td.tableblock>.content>:last-child{margin-bottom:-1.25em}
table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
table.grid-all>*>tr>*{border-width:1px}
table.grid-cols>*>tr>*{border-width:0 1px}
table.grid-rows>*>tr>*{border-width:1px 0}
table.frame-all{border-width:1px}
table.frame-ends{border-width:1px 0}
table.frame-sides{border-width:0 1px}
table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
table.stripes-all>*>tr,table.stripes-odd>*>tr:nth-of-type(odd),table.stripes-even>*>tr:nth-of-type(even),table.stripes-hover>*>tr:hover{background:#f8f8f7}
th.halign-left,td.halign-left{text-align:left}
th.halign-right,td.halign-right{text-align:right}
th.halign-center,td.halign-center{text-align:center}
th.valign-top,td.valign-top{vertical-align:top}
th.valign-bottom,td.valign-bottom{vertical-align:bottom}
th.valign-middle,td.valign-middle{vertical-align:middle}
table thead th,table tfoot th{font-weight:bold}
tbody tr th{background:#f7f8f7}
tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
p.tableblock>code:only-child{background:none;padding:0}
p.tableblock{font-size:1em}
ol{margin-left:1.75em}
ul li ol{margin-left:1.5em}
dl dd{margin-left:1.125em}
dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
ul.unstyled,ol.unstyled{margin-left:0}
li>p:empty:only-child::before{content:"";display:inline-block}
ul.checklist>li>p:first-child{margin-left:-1em}
ul.checklist>li>p:first-child>.fa-square-o:first-child,ul.checklist>li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
ul.checklist>li>p:first-child>input[type=checkbox]:first-child{margin-right:.25em}
ul.inline{display:flex;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
ul.inline>li{margin-left:1.25em}
.unstyled dl dt{font-weight:400;font-style:normal}
ol.arabic{list-style-type:decimal}
ol.decimal{list-style-type:decimal-leading-zero}
ol.loweralpha{list-style-type:lower-alpha}
ol.upperalpha{list-style-type:upper-alpha}
ol.lowerroman{list-style-type:lower-roman}
ol.upperroman{list-style-type:upper-roman}
ol.lowergreek{list-style-type:lower-greek}
.hdlist>table,.colist>table{border:0;background:none}
.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
td.hdlist1{font-weight:bold;padding-bottom:1.25em}
td.hdlist2{word-wrap:anywhere}
.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
.colist td:not([class]):first-child img{max-width:none}
.colist td:not([class]):last-child{padding:.25em 0}
.thumb,.th{line-height:0;display:inline-block;border:4px solid #fff;box-shadow:0 0 0 1px #ddd}
.imageblock.left{margin:.25em .625em 1.25em 0}
.imageblock.right{margin:.25em 0 1.25em .625em}
.imageblock>.title{margin-bottom:0}
.imageblock.thumb,.imageblock.th{border-width:6px}
.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
.image.left{margin-right:.625em}
.image.right{margin-left:.625em}
a.image{text-decoration:none;display:inline-block}
a.image object{pointer-events:none}
sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
sup.footnote a,sup.footnoteref a{text-decoration:none}
sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
#footnotes .footnote:last-of-type{margin-bottom:0}
#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
div.unbreakable{page-break-inside:avoid}
.big{font-size:larger}
.small{font-size:smaller}
.underline{text-decoration:underline}
.overline{text-decoration:overline}
.line-through{text-decoration:line-through}
.aqua{color:#00bfbf}
.aqua-background{background:#00fafa}
.black{color:#000}
.black-background{background:#000}
.blue{color:#0000bf}
.blue-background{background:#0000fa}
.fuchsia{color:#bf00bf}
.fuchsia-background{background:#fa00fa}
.gray{color:#606060}
.gray-background{background:#7d7d7d}
.green{color:#006000}
.green-background{background:#007d00}
.lime{color:#00bf00}
.lime-background{background:#00fa00}
.maroon{color:#600000}
.maroon-background{background:#7d0000}
.navy{color:#000060}
.navy-background{background:#00007d}
.olive{color:#606000}
.olive-background{background:#7d7d00}
.purple{color:#600060}
.purple-background{background:#7d007d}
.red{color:#bf0000}
.red-background{background:#fa0000}
.silver{color:#909090}
.silver-background{background:#bcbcbc}
.teal{color:#006060}
.teal-background{background:#007d7d}
.white{color:#bfbfbf}
.white-background{background:#fafafa}
.yellow{color:#bfbf00}
.yellow-background{background:#fafa00}
span.icon>.fa{cursor:default}
a span.icon>.fa{cursor:inherit}
.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
.conum[data-value] *{color:#fff!important}
.conum[data-value]+b{display:none}
.conum[data-value]::after{content:attr(data-value)}
pre .conum[data-value]{position:relative;top:-.125em}
b.conum *{color:inherit!important}
.conum:not([data-value]):empty{display:none}
dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
h1,h2,p,td.content,span.alt,summary{letter-spacing:-.01em}
p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
p,blockquote,dt,td.content,td.hdlist1,span.alt,summary{font-size:1.0625rem}
p{margin-bottom:1.25rem}
.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
.exampleblock>.content{background:#fffef7;border-color:#e0e0dc;box-shadow:0 1px 4px #e0e0dc}
.print-only{display:none!important}
@page{margin:1.25cm .75cm}
@media print{*{box-shadow:none!important;text-shadow:none!important}
html{font-size:80%}
a{color:inherit!important;text-decoration:underline!important}
a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
abbr[title]{border-bottom:1px dotted}
abbr[title]::after{content:" (" attr(title) ")"}
pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
thead{display:table-header-group}
svg{max-width:100%}
p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
#header,#content,#footnotes,#footer{max-width:none}
#toc,.sidebarblock,.exampleblock>.content{background:none!important}
#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
body.book #header{text-align:center}
body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
body.book #header .details{border:0!important;display:block;padding:0!important}
body.book #header .details span:first-child{margin-left:0!important}
body.book #header .details br{display:block}
body.book #header .details br+span::before{content:none!important}
body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
.listingblock code[data-lang]::before{display:block}
#footer{padding:0 .9375em}
.hide-on-print{display:none!important}
.print-only{display:block!important}
.hide-for-print{display:none!important}
.show-for-print{display:inherit!important}}
@media amzn-kf8,print{#header>h1:first-child{margin-top:1.25rem}
.sect1{padding:0!important}
.sect1+.sect1{border:0}
#footer{background:none}
#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
</style>
<style>
pre.rouge table td { padding: 5px; }
pre.rouge table pre { margin: 0; }
pre.rouge, pre.rouge .w {
color: #24292f;
background-color: #f6f8fa;
}
pre.rouge .k, pre.rouge .kd, pre.rouge .kn, pre.rouge .kp, pre.rouge .kr, pre.rouge .kt, pre.rouge .kv {
color: #cf222e;
}
pre.rouge .gr {
color: #f6f8fa;
}
pre.rouge .gd {
color: #82071e;
background-color: #ffebe9;
}
pre.rouge .nb {
color: #953800;
}
pre.rouge .nc {
color: #953800;
}
pre.rouge .no {
color: #953800;
}
pre.rouge .nn {
color: #953800;
}
pre.rouge .sr {
color: #116329;
}
pre.rouge .na {
color: #116329;
}
pre.rouge .nt {
color: #116329;
}
pre.rouge .gi {
color: #116329;
background-color: #dafbe1;
}
pre.rouge .ges {
font-weight: bold;
font-style: italic;
}
pre.rouge .kc {
color: #0550ae;
}
pre.rouge .l, pre.rouge .ld, pre.rouge .m, pre.rouge .mb, pre.rouge .mf, pre.rouge .mh, pre.rouge .mi, pre.rouge .il, pre.rouge .mo, pre.rouge .mx {
color: #0550ae;
}
pre.rouge .sb {
color: #0550ae;
}
pre.rouge .bp {
color: #0550ae;
}
pre.rouge .ne {
color: #0550ae;
}
pre.rouge .nl {
color: #0550ae;
}
pre.rouge .py {
color: #0550ae;
}
pre.rouge .nv, pre.rouge .vc, pre.rouge .vg, pre.rouge .vi, pre.rouge .vm {
color: #0550ae;
}
pre.rouge .o, pre.rouge .ow {
color: #0550ae;
}
pre.rouge .gh {
color: #0550ae;
font-weight: bold;
}
pre.rouge .gu {
color: #0550ae;
font-weight: bold;
}
pre.rouge .s, pre.rouge .sa, pre.rouge .sc, pre.rouge .dl, pre.rouge .sd, pre.rouge .s2, pre.rouge .se, pre.rouge .sh, pre.rouge .sx, pre.rouge .s1, pre.rouge .ss {
color: #0a3069;
}
pre.rouge .nd {
color: #8250df;
}
pre.rouge .nf, pre.rouge .fm {
color: #8250df;
}
pre.rouge .err {
color: #f6f8fa;
background-color: #82071e;
}
pre.rouge .c, pre.rouge .ch, pre.rouge .cd, pre.rouge .cm, pre.rouge .cp, pre.rouge .cpf, pre.rouge .c1, pre.rouge .cs {
color: #6e7781;
}
pre.rouge .gl {
color: #6e7781;
}
pre.rouge .gt {
color: #6e7781;
}
pre.rouge .ni {
color: #24292f;
}
pre.rouge .si {
color: #24292f;
}
pre.rouge .ge {
color: #24292f;
font-style: italic;
}
pre.rouge .gs {
color: #24292f;
font-weight: bold;
}
</style>
</head>
<body class="article toc2 toc-left">
<div id="header">
<h1>ТЗ: CLI клиент для apostol-dm</h1>
<div id="toc" class="toc2">
<div id="toctitle">Оглавление</div>
<ul class="sectlevel1">
<li><a href="#_введение">1. Введение</a></li>
<li><a href="#_общиеребования">2. Общие требования</a></li>
<li><a href="#_функции_dm_cli">3. Функции dm-cli</a>
<ul class="sectlevel2">
<li><a href="#_документация_поспользованию">3.1. Документация по использованию</a></li>
<li><a href="#_запросанных_пользователей">3.2. Запрос данных пользователей</a></li>
<li><a href="#_изменение_учётныханных_пользователя">3.3. Изменение учётных данных пользователя</a></li>
<li><a href="#_создание_сделки">3.4. Создание сделки</a></li>
<li><a href="#_статус_сделки">3.5. Статус сделки</a></li>
<li><a href="#_завершение_сделки">3.6. Завершение сделки</a></li>
<li><a href="#_отмена_сделки">3.7. Отмена сделки</a></li>
<li><a href="#_оставлениеегативного_отзыва">3.8. Оставление негативного отзыва</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_введение"><a class="anchor" href="#_введение"></a><a class="link" href="#_введение">1. Введение</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Приложение <code>dm-cli</code> - интерфейс командной строки для доступа к функциям модуля сделок (dm) сервиса обработки bitcoin платежей BitDeals. Приложение должно предоставлять доступ к основной функциональности dm через командную строку.</p>
</div>
<div class="paragraph">
<p>Ресурсы:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Исходный код модуля сделок: <a href="https://git.bitdeals.org/private/apostol-dm/" class="bare">https://git.bitdeals.org/private/apostol-dm/</a>.</p>
</li>
<li>
<p>Docker образ модуля сделок: <code>docker pull <a href="https://registry.bitdeals.org/apostol-dm">registry.bitdeals.org/apostol-dm</a></code></p>
</li>
<li>
<p>Документация API модуля сделок: <a href="https://git.bitdeals.org/private/apostol-dm/src/branch/master/doc/REST-API-ru.md" class="bare">https://git.bitdeals.org/private/apostol-dm/src/branch/master/doc/REST-API-ru.md</a></p>
</li>
<li>
<p>Веб интерфейс модуля сделок: <a href="https://testnet-dm2.bitdeals.org/dm/" class="bare">https://testnet-dm2.bitdeals.org/dm/</a>.</p>
</li>
<li>
<p>Доступные пользователи bitdeals для работы с учётными данными и сделками при выполнении ТЗ: <code>mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp</code> (продавец); <code>mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC</code> (покупатель); <code>mynFyJJkRhsbB6y1Q5kTgDGckVz2m9NKH8</code> (пользователь модуля сделок).</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_общиеребования"><a class="anchor" href="#_общиеребования"></a><a class="link" href="#_общиеребования">2. Общие требования</a></h2>
<div class="sectionbody">
<div class="olist arabic">
<ol class="arabic">
<li>
<p>В режиме работы <code>--debug</code> приложение должно дополнительно выводить данные API запросов и ответов.</p>
</li>
<li>
<p>Значение параметра <code>--address</code> приложения должно принимать IP адрес и порт, или URL путь, например <code><a href="https://testnet-dm2.bitdeals.org/dm/" class="bare">https://testnet-dm2.bitdeals.org/dm/</a></code> .</p>
</li>
</ol>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_функции_dm_cli"><a class="anchor" href="#_функции_dm_cli"></a><a class="link" href="#_функции_dm_cli">3. Функции dm-cli</a></h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_документация_поспользованию"><a class="anchor" href="#_документация_поспользованию"></a><a class="link" href="#_документация_поспользованию">3.1. Документация по использованию</a></h3>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Приложение должно выводить справку по использованию приложения по ключу <code>-h</code> или <code>--help</code></p>
</li>
<li>
<p>Если переменная в значении: <code>LANG=ru_RU.UTF-8</code>, то справка должна быть на русском языке.</p>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">Пример сообщения 'dm-cli --help':</strong></span></code>
</summary><div> </p>
</div>
<div class="paragraph">
<p>На английском:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="plaintext">Usage: dm-cli [global] &lt;group&gt; [&lt;args&gt;]
Global options:
--debug print debug information, input and output API requests
--address &lt;ip:port&gt; 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 &lt;bitcoin_address&gt;
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</code></pre>
</div>
</div>
<div class="paragraph">
<p>На русском:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="plaintext">Использование: dm-cli [глобальные параметры] &lt;группа&gt; [&lt;аргументы&gt;]
Глобальные параметры:
--debug выводить отладочную информацию, входные и выходные API-запросы
--address &lt;ip:port&gt; адрес модуля сделок (dm), по умолчанию: 127.0.0.1:4999
--help вывести краткую справку по всем подкомандам
--version вывести строку версии
dm-cli account status &lt;биткоин адрес&gt;
Показать учётные данные аккаунта
dm-cli account update [параметры]
Изменить учётные данные аккаунта
dm-cli deal create
Создать новую сделку
dm-cli deal status
Показать данные сделки
dm-cli deal complete
Завершить сделку
dm-cli deal cancel
Отменить сделку
dm-cli deal negative
Оставить негативный отзыв</code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
</ol>
</div>
</div>
<div class="sect2">
<h3 id="_запросанных_пользователей"><a class="anchor" href="#_запросанных_пользователей"></a><a class="link" href="#_запросанных_пользователей">3.2. Запрос данных пользователей</a></h3>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Запрос должен происходить в соответствии с синтаксисом:</p>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">Пример сообщения 'dm-cli account status --help':</strong></span></code>
</summary><div> </p>
</div>
<div class="paragraph">
<p>На английском:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="plaintext">Usage: dm-cli account status [options] &lt;bitcoin_address&gt;
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).</code></pre>
</div>
</div>
<div class="paragraph">
<p>На русском:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="plaintext">Использование: dm-cli account status [параметры] &lt;биткоин адрес&gt;
Показать информацию о пользователе bitdeals.
-f|--feedbacks [p|n] Показать последнюю 1 тыс. полученных отзывов.
Используй p или n для фильтрации только позитивных или негативных отзывов.
-i|--info Показать данные учётной записи.
-r|--rating Показать данные рейтинга.
-s|--status Показать статус пользователя (действие по умолчанию).</code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
<li>
<p>Примеры входных и выходных данных.</p>
<div class="olist loweralpha">
<ol class="loweralpha" type="a">
<li>
<p>Запрос статуса (<code>--status</code>) пользователя <code>mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp</code>:</p>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">curl <span class="s2">"https://testnet-dm.bitdeals.org/api/v1/account/status?address=mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp"</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">Пример ответа:</strong></span></code>
</summary><div> </p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="json"><span class="p">{</span><span class="w">
</span><span class="nl">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"c381f540d48c1d34"</span><span class="p">,</span><span class="w">
</span><span class="nl">"action"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Status"</span><span class="p">,</span><span class="w">
</span><span class="nl">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp"</span><span class="p">,</span><span class="w">
</span><span class="nl">"result"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="nl">"success"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
</span><span class="nl">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Open"</span><span class="w">
</span><span class="p">},</span><span class="w">
</span><span class="nl">"payload"</span><span class="p">:</span><span class="w"> </span><span class="s2">"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="</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
<li>
<p>Запрос информации (<code>--info</code>) о пользователе <code>mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC</code>:</p>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">curl <span class="nt">-X</span> POST <span class="s2">"https://testnet-dm2.bitdeals.org/api/v1/user/profile"</span> <span class="se">\</span>
<span class="nt">-H</span> <span class="s2">"Content-Type: application/json"</span>
<span class="nt">-d</span> <span class="s1">'{"code":"mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC"}'</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">Пример ответа:</strong></span></code>
</summary><div> </p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="json"><span class="p">{</span><span class="w">
</span><span class="nl">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"65380112-e797-4041-8254-0c8878ea36e2"</span><span class="p">,</span><span class="w">
</span><span class="nl">"userid"</span><span class="p">:</span><span class="w"> </span><span class="s2">"fdbde2fe-d7c4-42d4-a6fd-39c58a17afac"</span><span class="p">,</span><span class="w">
</span><span class="nl">"created"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2023-03-15T17:03:32.192766+03:00"</span><span class="p">,</span><span class="w">
</span><span class="nl">"code"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC"</span><span class="p">,</span><span class="w">
</span><span class="nl">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC"</span><span class="p">,</span><span class="w">
</span><span class="nl">"bitmessages"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
</span><span class="s2">"BM-2cWUG4jmW9CwKtNYv6nrJFTiNL4f8Ys8Dd"</span><span class="w">
</span><span class="p">],</span><span class="w">
</span><span class="nl">"module"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mynFyJJkRhsbB6y1Q5kTgDGckVz2m9NKH8"</span><span class="p">,</span><span class="w">
</span><span class="nl">"btckey"</span><span class="p">:</span><span class="w"> </span><span class="s2">"02128188a04564583a8540bcd584116d7de1d04dbbcc79c8fd5d45e6a1a65c7031"</span><span class="p">,</span><span class="w">
</span><span class="nl">"pgpkey"</span><span class="p">:</span><span class="w"> </span><span class="s2">"-----BEGIN PGP PUBLIC KEY BLOCK-----</span><span class="se">\n\n</span><span class="s2">mI0EaByQKQEEAMfwUb7ErrEBDLkjYNwxFvzqdekC3+gR/GpyKOz55kNX/Cwm6ohS</span><span class="se">\n</span><span class="s2">kNJGVlTR73pXSrQV0c14Dwzgf+HCBFamx1toOCW72GytX71aom2uXHLy8JOzc7bk</span><span class="se">\n</span><span class="s2">aQ+wLti0ghx+cdwvgRuJV5co2tlTxh87iariasP3Dgas4wtRrNvDcQNNABEBAAG0</span><span class="se">\n</span><span class="s2">JEFjY291bnRfVVJMIChodHRwOi8vcmFuZG9tLXNpdGUuY29tKYjOBBMBCgA4FiEE</span><span class="se">\n</span><span class="s2">nvbbPXqkDv91aLC/44t8noXtKDgFAmgckCkCGwMFCwkIBwMFFQoJCAsFFgIDAQAC</span><span class="se">\n</span><span class="s2">HgECF4AACgkQ44t8noXtKDhovwP/eSVEE4234FPSAbI04DFSwt+TtwTqlFHV4O0d</span><span class="se">\n</span><span class="s2">IzoGHNrQDB/jROugZtRsYR5mQtKbRuSSZTxZZikoJAufG3GBaq4JbDVsYQWRYl/G</span><span class="se">\n</span><span class="s2">cxmOlS3u+qzjLCDKnn7VDDer+Ewbj2Cc4feH4eJe5vk7TOlXRAfPjV+Mm1gxTVUg</span><span class="se">\n</span><span class="s2">cw44f624jQRoHJApAQQAu1u/UED5BYEblglb399KDyWHWRPSgM7yQvQHSUxUG4y9</span><span class="se">\n</span><span class="s2">vzyDC303Hj238RI3AsYRF61EoriHlwAibf2d5LXwPpQrBuKyAzOPus3AIsVPqerK</span><span class="se">\n</span><span class="s2">aQB9poEpdHFr6qhDBumm1uHDKeFMhMcObI0Spz1Y5vUfJq5bMV3KGoYcxlac5bEA</span><span class="se">\n</span><span class="s2">EQEAAYi2BBgBCgAgFiEEnvbbPXqkDv91aLC/44t8noXtKDgFAmgckCkCGwwACgkQ</span><span class="se">\n</span><span class="s2">44t8noXtKDj1uwP+IS11c2N2dGLzpTHdujN1NVrvPxGur3lAxIidG57fGwK76RYm</span><span class="se">\n</span><span class="s2">CrXws6SHORphBUw8nYzE1k9ZTOaZ4c/cNYYpDv6sxYqbFcco5WB1BnGUqtXUj4eK</span><span class="se">\n</span><span class="s2">8vtje+VeZ+DOPmjUIEd3lMcTJo9sUXzLUxwiFIk89IGXSieOJ5QL+8M/M38=</span><span class="se">\n</span><span class="s2">=4NLS</span><span class="se">\n</span><span class="s2">-----END PGP PUBLIC KEY BLOCK-----"</span><span class="p">,</span><span class="w">
</span><span class="nl">"urlaccount"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
</span><span class="s2">"https://testnet.bitdeals.org"</span><span class="p">,</span><span class="w">
</span><span class="s2">"http://random-site.com"</span><span class="w">
</span><span class="p">],</span><span class="w">
</span><span class="nl">"urltrusted"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
</span><span class="s2">"https://testnet.bitdeals.org"</span><span class="p">,</span><span class="w">
</span><span class="s2">"http://170.75.173.70:4999"</span><span class="p">,</span><span class="w">
</span><span class="s2">"https://placard.zr-code.com"</span><span class="p">,</span><span class="w">
</span><span class="s2">"http://testnet-dm.bitdeals.org:4999"</span><span class="p">,</span><span class="w">
</span><span class="s2">"http://placard.zr-code.com"</span><span class="p">,</span><span class="w">
</span><span class="s2">"http://testnet-dm.bitdeals.org"</span><span class="p">,</span><span class="w">
</span><span class="s2">"https://testnet-dm2.bitdeals.org"</span><span class="p">,</span><span class="w">
</span><span class="s2">"http://testnet-dm2.bitdeals.org"</span><span class="p">,</span><span class="w">
</span><span class="s2">"http://testnet.bitdeals.org"</span><span class="p">,</span><span class="w">
</span><span class="s2">"https://testnet-dm.bitdeals.org"</span><span class="p">,</span><span class="w">
</span><span class="s2">"https://placard.bitdeals.org"</span><span class="p">,</span><span class="w">
</span><span class="s2">"http://placard.bitdeals.org"</span><span class="p">,</span><span class="w">
</span><span class="s2">"http://testnet2.bitdeals.org"</span><span class="p">,</span><span class="w">
</span><span class="s2">"https://testnet2.bitdeals.org"</span><span class="p">,</span><span class="w">
</span><span class="s2">"http://placard2.bitdeals.org"</span><span class="p">,</span><span class="w">
</span><span class="s2">"https://placard2.bitdeals.org"</span><span class="p">,</span><span class="w">
</span><span class="s2">"http://random-site.com"</span><span class="w">
</span><span class="p">],</span><span class="w">
</span><span class="nl">"seller"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="nl">"count"</span><span class="p">:</span><span class="w"> </span><span class="mi">11</span><span class="p">,</span><span class="w">
</span><span class="nl">"positive"</span><span class="p">:</span><span class="w"> </span><span class="mi">5</span><span class="w">
</span><span class="p">},</span><span class="w">
</span><span class="nl">"customer"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="nl">"count"</span><span class="p">:</span><span class="w"> </span><span class="mi">604</span><span class="p">,</span><span class="w">
</span><span class="nl">"positive"</span><span class="p">:</span><span class="w"> </span><span class="mi">36</span><span class="w">
</span><span class="p">},</span><span class="w">
</span><span class="nl">"state"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2565936d-6798-4035-b30d-9b1d388f40a6"</span><span class="p">,</span><span class="w">
</span><span class="nl">"statecode"</span><span class="p">:</span><span class="w"> </span><span class="s2">"enabled"</span><span class="p">,</span><span class="w">
</span><span class="nl">"statelabel"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Open"</span><span class="w">
</span><span class="p">}</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
<li>
<p>Запрос списка отзывов (<code>--feedbacks</code>) пользователя <code>mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC</code>:</p>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">curl <span class="nt">-X</span> POST <span class="s2">"https://testnet-dm2.bitdeals.org/api/v1/deal/feedback/list"</span> <span class="se">\</span>
<span class="nt">-H</span> <span class="s2">"Content-Type: application/json"</span> <span class="se">\</span>
<span class="nt">-d</span> <span class="s1">'{"search":[{"field":"sellercode","compare":"EQL","value":"mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC"}],"orderby":["date DESC"],"reclimit":1000,"recoffset":0}'</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">Пример ответа:</strong></span></code>
</summary><div> </p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="json"><span class="p">[</span><span class="w">
</span><span class="p">{</span><span class="w">
</span><span class="nl">"deal"</span><span class="p">:</span><span class="w"> </span><span class="s2">"d63350a1-8483-4c0f-87d2-8a4920f7bdba"</span><span class="p">,</span><span class="w">
</span><span class="nl">"date"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2025-09-17T11:40:11"</span><span class="p">,</span><span class="w">
</span><span class="nl">"sum"</span><span class="p">:</span><span class="w"> </span><span class="mf">0.002</span><span class="p">,</span><span class="w">
</span><span class="nl">"seller"</span><span class="p">:</span><span class="w"> </span><span class="s2">"65380112-e797-4041-8254-0c8878ea36e2"</span><span class="p">,</span><span class="w">
</span><span class="nl">"sellercode"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC"</span><span class="p">,</span><span class="w">
</span><span class="nl">"customer"</span><span class="p">:</span><span class="w"> </span><span class="s2">"65380112-e797-4041-8254-0c8878ea36e2"</span><span class="p">,</span><span class="w">
</span><span class="nl">"customercode"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC"</span><span class="p">,</span><span class="w">
</span><span class="nl">"leave_before"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2025-09-17T13:00:00"</span><span class="p">,</span><span class="w">
</span><span class="nl">"status"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span><span class="w">
</span><span class="nl">"statustext"</span><span class="p">:</span><span class="w"> </span><span class="s2">"none"</span><span class="p">,</span><span class="w">
</span><span class="nl">"comments"</span><span class="p">:</span><span class="w"> </span><span class="s2">"cancel deal test comment message 3"</span><span class="p">,</span><span class="w">
</span><span class="nl">"refund"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="w">
</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="w">
</span><span class="nl">"deal"</span><span class="p">:</span><span class="w"> </span><span class="s2">"7e82e9c3-0e85-4635-8b53-6da7e541e6e3"</span><span class="p">,</span><span class="w">
</span><span class="nl">"date"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2025-09-17T11:29:35"</span><span class="p">,</span><span class="w">
</span><span class="nl">"sum"</span><span class="p">:</span><span class="w"> </span><span class="mf">0.002</span><span class="p">,</span><span class="w">
</span><span class="nl">"seller"</span><span class="p">:</span><span class="w"> </span><span class="s2">"65380112-e797-4041-8254-0c8878ea36e2"</span><span class="p">,</span><span class="w">
</span><span class="nl">"sellercode"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC"</span><span class="p">,</span><span class="w">
</span><span class="nl">"customer"</span><span class="p">:</span><span class="w"> </span><span class="s2">"65380112-e797-4041-8254-0c8878ea36e2"</span><span class="p">,</span><span class="w">
</span><span class="nl">"customercode"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC"</span><span class="p">,</span><span class="w">
</span><span class="nl">"leave_before"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2025-09-17T12:50:01"</span><span class="p">,</span><span class="w">
</span><span class="nl">"status"</span><span class="p">:</span><span class="w"> </span><span class="mi">-1</span><span class="p">,</span><span class="w">
</span><span class="nl">"statustext"</span><span class="p">:</span><span class="w"> </span><span class="s2">"negative"</span><span class="p">,</span><span class="w">
</span><span class="nl">"comments"</span><span class="p">:</span><span class="w"> </span><span class="s2">"negative comment text for test"</span><span class="p">,</span><span class="w">
</span><span class="nl">"refund"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="w">
</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="w">
</span><span class="nl">"deal"</span><span class="p">:</span><span class="w"> </span><span class="s2">"3f989f08-b5a0-4ceb-80a5-acd18a6559d4"</span><span class="p">,</span><span class="w">
</span><span class="nl">"date"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2025-09-17T11:28:28"</span><span class="p">,</span><span class="w">
</span><span class="nl">"sum"</span><span class="p">:</span><span class="w"> </span><span class="mf">0.002</span><span class="p">,</span><span class="w">
</span><span class="nl">"seller"</span><span class="p">:</span><span class="w"> </span><span class="s2">"65380112-e797-4041-8254-0c8878ea36e2"</span><span class="p">,</span><span class="w">
</span><span class="nl">"sellercode"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC"</span><span class="p">,</span><span class="w">
</span><span class="nl">"customer"</span><span class="p">:</span><span class="w"> </span><span class="s2">"65380112-e797-4041-8254-0c8878ea36e2"</span><span class="p">,</span><span class="w">
</span><span class="nl">"customercode"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC"</span><span class="p">,</span><span class="w">
</span><span class="nl">"leave_before"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2025-09-17T12:50:01"</span><span class="p">,</span><span class="w">
</span><span class="nl">"status"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
</span><span class="nl">"statustext"</span><span class="p">:</span><span class="w"> </span><span class="s2">"neutral"</span><span class="p">,</span><span class="w">
</span><span class="nl">"comments"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span><span class="w">
</span><span class="nl">"refund"</span><span class="p">:</span><span class="w"> </span><span class="s2">"50"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="p">]</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
</ol>
</div>
</li>
<li>
<p>Примеры вывода команд <code>dm-cli account</code>:</p>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">dm-cli account status mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp:</strong></span></code>
</summary><div> </p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="plaintext">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.</code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">dm-cli account --info mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC:</strong></span></code>
</summary><div> </p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="yaml"><span class="na">bitcoin</span><span class="pi">:</span> <span class="s">mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC</span>
<span class="na">btckey</span><span class="pi">:</span> <span class="s">02128188a04564583a8540bcd584116d7de1d04dbbcc79c8fd5d45e6a1a65c7031</span>
<span class="na">bitmessage</span><span class="pi">:</span> <span class="s">BM-2cWUG4jmW9CwKtNYv6nrJFTiNL4f8Ys8Dd</span>
<span class="na">pgpkey</span><span class="pi">:</span> <span class="pi">|</span>
<span class="s">-----BEGIN PGP PUBLIC KEY BLOCK-----</span>
<span class="s">mI0EaByQKQEEAMfwUb7ErrEBDLkjYNwxFvzqdekC3+gR/GpyKOz55kNX/Cwm6ohS</span>
<span class="s">kNJGVlTR73pXSrQV0c14Dwzgf+HCBFamx1toOCW72GytX71aom2uXHLy8JOzc7bk</span>
<span class="s">aQ+wLti0ghx+cdwvgRuJV5co2tlTxh87iariasP3Dgas4wtRrNvDcQNNABEBAAG0</span>
<span class="s">JEFjY291bnRfVVJMIChodHRwOi8vcmFuZG9tLXNpdGUuY29tKYjOBBMBCgA4FiEE</span>
<span class="s">nvbbPXqkDv91aLC/44t8noXtKDgFAmgckCkCGwMFCwkIBwMFFQoJCAsFFgIDAQAC</span>
<span class="s">HgECF4AACgkQ44t8noXtKDhovwP/eSVEE4234FPSAbI04DFSwt+TtwTqlFHV4O0d</span>
<span class="s">IzoGHNrQDB/jROugZtRsYR5mQtKbRuSSZTxZZikoJAufG3GBaq4JbDVsYQWRYl/G</span>
<span class="s">cxmOlS3u+qzjLCDKnn7VDDer+Ewbj2Cc4feH4eJe5vk7TOlXRAfPjV+Mm1gxTVUg</span>
<span class="s">cw44f624jQRoHJApAQQAu1u/UED5BYEblglb399KDyWHWRPSgM7yQvQHSUxUG4y9</span>
<span class="s">vzyDC303Hj238RI3AsYRF61EoriHlwAibf2d5LXwPpQrBuKyAzOPus3AIsVPqerK</span>
<span class="s">aQB9poEpdHFr6qhDBumm1uHDKeFMhMcObI0Spz1Y5vUfJq5bMV3KGoYcxlac5bEA</span>
<span class="s">EQEAAYi2BBgBCgAgFiEEnvbbPXqkDv91aLC/44t8noXtKDgFAmgckCkCGwwACgkQ</span>
<span class="s">44t8noXtKDj1uwP+IS11c2N2dGLzpTHdujN1NVrvPxGur3lAxIidG57fGwK76RYm</span>
<span class="s">CrXws6SHORphBUw8nYzE1k9ZTOaZ4c/cNYYpDv6sxYqbFcco5WB1BnGUqtXUj4eK</span>
<span class="s">8vtje+VeZ+DOPmjUIEd3lMcTJo9sUXzLUxwiFIk89IGXSieOJ5QL+8M/M38=</span>
<span class="s">=4NLS</span>
<span class="s">-----END PGP PUBLIC KEY BLOCK-----</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">dm-cli account --feedbacks p mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp:</strong></span></code>
</summary><div> </p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="yaml"><span class="pi">-</span> <span class="na">deal</span><span class="pi">:</span> <span class="s">ff5f337f-e0ab-4515-857f-3a0c8530dcd3</span>
<span class="na">date</span><span class="pi">:</span> <span class="s1">'</span><span class="s">2025-10-05T15:29:23'</span>
<span class="na">statustext</span><span class="pi">:</span> <span class="s">positive</span>
<span class="na">comments</span><span class="pi">:</span> <span class="s">positive comment about the deal</span>
<span class="pi">-</span> <span class="na">deal</span><span class="pi">:</span> <span class="s">b7657c83-1502-4a33-8d35-4317a8d5e086</span>
<span class="na">date</span><span class="pi">:</span> <span class="s1">'</span><span class="s">2025-09-17T10:44:50'</span>
<span class="na">statustext</span><span class="pi">:</span> <span class="s">positive</span>
<span class="na">comments</span><span class="pi">:</span> <span class="kc">null</span>
<span class="pi">-</span> <span class="na">deal</span><span class="pi">:</span> <span class="s">1a79222f-401c-4a73-8f3f-3f0184db3fbb</span>
<span class="na">date</span><span class="pi">:</span> <span class="s1">'</span><span class="s">2025-08-04T10:42:36'</span>
<span class="na">statustext</span><span class="pi">:</span> <span class="s">positive</span>
<span class="na">comments</span><span class="pi">:</span> <span class="kc">null</span>
<span class="pi">-</span> <span class="na">deal</span><span class="pi">:</span> <span class="s">ecc50f4c-4477-4eee-84b7-f8b2ba3755a3</span>
<span class="na">date</span><span class="pi">:</span> <span class="s1">'</span><span class="s">2025-08-04T08:42:46'</span>
<span class="na">statustext</span><span class="pi">:</span> <span class="s">positive</span>
<span class="na">comments</span><span class="pi">:</span> <span class="kc">null</span>
<span class="pi">-</span> <span class="na">deal</span><span class="pi">:</span> <span class="s">aa7ff721-8b15-42f4-8de0-a79bdf47fd55</span>
<span class="na">date</span><span class="pi">:</span> <span class="s1">'</span><span class="s">2025-08-01T08:46:16'</span>
<span class="na">statustext</span><span class="pi">:</span> <span class="s">positive</span>
<span class="na">comments</span><span class="pi">:</span> <span class="kc">null</span>
<span class="pi">-</span> <span class="na">deal</span><span class="pi">:</span> <span class="s">34010ce2-6775-474d-8316-3bbcea736d8e</span>
<span class="na">date</span><span class="pi">:</span> <span class="s1">'</span><span class="s">2025-08-01T08:14:23'</span>
<span class="na">statustext</span><span class="pi">:</span> <span class="s">positive</span>
<span class="na">comments</span><span class="pi">:</span> <span class="kc">null</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">dm-cli account --rating mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC:</strong></span></code>
</summary><div> </p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="yaml"><span class="na">created</span><span class="pi">:</span> <span class="s">2023-03-15</span>
<span class="na">seller</span><span class="pi">:</span>
<span class="na">count</span><span class="pi">:</span> <span class="m">11</span>
<span class="na">positive</span><span class="pi">:</span> <span class="m">5</span>
<span class="na">customer</span><span class="pi">:</span>
<span class="na">count</span><span class="pi">:</span> <span class="m">604</span>
<span class="na">positive</span><span class="pi">:</span> <span class="s">36</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
</ol>
</div>
</div>
<div class="sect2">
<h3 id="_изменение_учётныханных_пользователя"><a class="anchor" href="#_изменение_учётныханных_пользователя"></a><a class="link" href="#_изменение_учётныханных_пользователя">3.3. Изменение учётных данных пользователя</a></h3>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Запрос должен происходить в соответствии с синтаксисом:</p>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">Пример сообщения 'dm-cli account update --help':</strong></span></code>
</summary><div> </p>
</div>
<div class="paragraph">
<p>На английском:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="plaintext">Usage: dm-cli account update [options] &lt;bitcoin_address&gt;
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 &lt;yyyy-mm-dd&gt; Current date.
-s|--signature &lt;sig&gt; Bitcoin signature.
-p|--pgp &lt;pgp&gt; Set up an armored RSA pgp key.
-u|--url [+/-]&lt;url&gt; Add/remove an url to trusted list.
-b|--bitmessage Change bitmessage address.</code></pre>
</div>
</div>
<div class="paragraph">
<p>На русском:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="plaintext">Использование: dm-cli account update [параметры] &lt;биткоин адрес&gt;
Изменить учётные данные пользователя.
Для изменения учётных данных вы должны подписать текущую дату и новые данные пользователя
вашим приватным биткоин ключом. Например, текущая дата, новый битмессадж, подпись:
2020-01-01
BM-2cUuxYUFWLCrtpKRMdHCpU1QKEuFtHh7vu
IEF1ysyhu8ps0m5xSJaZZg/5hBylmcWQQggkGO7yNN8iMf/EA2O287kxi58xCDDtxvdsC0TWqylVE5MT5CouamU=
-d|--date &lt;yyyy-mm-dd&gt; Текущая дата.
-s|--signature &lt;sig&gt; Биткоин подпись.
-p|--pgp &lt;pgp&gt; Установить armored RSA pgp ключ.
-u|--url [+/-]&lt;url&gt; Добавить/удалить url в trusted список.
-b|--bitmessage Изменить битмессадж адрес.</code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
<li>
<p>Примеры входных и выходных данных.</p>
<div class="olist loweralpha">
<ol class="loweralpha" type="a">
<li>
<p>Добавлиение url в trusted список пользователя <code>mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp</code>:</p>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">curl <span class="nt">-X</span> POST <span class="s2">"https://testnet-dm2.bitdeals.org/api/v1/client/update"</span> <span class="se">\</span>
<span class="nt">-H</span> <span class="s2">"Content-Type: application/json"</span> <span class="se">\</span>
<span class="nt">-d</span> <span class="s1">'{"address":"mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp","date":"2025-10-21","url":["https://testnet-dm2.bitdeals.org"],"sign":"IAGHICUSCxUrcWTMSL9j94vRufb9l5nBckahT+RznlHMPx9LTPpDHsozxVyxkpjtgrhC8eCyJKNaOw8U/v56pL0="}'</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">Пример ответа:</strong></span></code>
</summary><div> </p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="json"><span class="p">{</span><span class="nl">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2838be66674f610b06746deb3654a641cf25cc73cb"</span><span class="p">,</span><span class="w"> </span><span class="nl">"action"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Update"</span><span class="p">,</span><span class="w"> </span><span class="nl">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp"</span><span class="p">,</span><span class="w"> </span><span class="nl">"result"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"success"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"> </span><span class="nl">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Account updated"</span><span class="p">},</span><span class="w"> </span><span class="nl">"payload"</span><span class="p">:</span><span class="w"> </span><span class="s2">"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IkJpdERlYWxzIFBheW1lbnQgU2VydmljZSI+CjwvaGVhZD4KPGJvZHk+CjxwcmU+SGVsbG8sIDxiPm1udW1IczlIUU1ydzJRMWlLTE5ueDlOekV4UzduTUxteXA8L2I+IQoKPGZvbnQgY29sb3I9IiMxNDVBMzIiPjxiPkFjY291bnQgdXBkYXRlZDwvYj48L2ZvbnQ+CgpBY3Rpb246IDxiPlVwZGF0ZTwvYj4KCkluIG1lc3NhZ2UgYm9keSBmb3VuZDoKClRoZSBzaWduYXR1cmUgaXMgPGZvbnQgY29sb3I9IiMxNDVBMzIiPjxiPnZhbGlkLjwvYj48L2ZvbnQ+CgpWZXJpZmljYXRpb24gZGF0ZTogPGI+WWVzPC9iPgpCaXRjb2luIHB1YmxpYyBrZXk6IDxiPk5vPC9iPgpQR1AgcHVibGljIGtleTogPGI+Tm88L2I+ClRydXN0ZWQgVVJMIGNvdW50OiA8Yj4xPC9iPgoKLS0tLS0KVGhhbmsgeW91LApCaXREZWFscy48L3ByZT4KPC9ib2R5Pgo8L2h0bWw+Cg=="</span><span class="p">}</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
</ol>
</div>
</li>
<li>
<p>Пример вывода команды <code>dm-cli account update</code>:</p>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">dm-cli account update -d 2025-10-21 -s "IAGH&#8230;&#8203;pL0=" -u "https://testnet-dm2.bitdeals.org" mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp:</strong></span></code>
</summary><div> </p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="yaml"><span class="na">success</span><span class="pi">:</span> <span class="kc">true</span>
<span class="na">message</span><span class="pi">:</span> <span class="s">Account updated</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
<li>
<p>Команда должна производить изменение данных пользователя:</p>
<div class="olist loweralpha">
<ol class="loweralpha" type="a">
<li>
<p>PGP ключа</p>
</li>
<li>
<p>Списка Trusted URL</p>
</li>
<li>
<p>Bitmessage адреса</p>
</li>
</ol>
</div>
</li>
</ol>
</div>
</div>
<div class="sect2">
<h3 id="_создание_сделки"><a class="anchor" href="#_создание_сделки"></a><a class="link" href="#_создание_сделки">3.4. Создание сделки</a></h3>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Запрос должен происходить в соответствии с синтаксисом:</p>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">Пример сообщения 'dm-cli deal create --help':</strong></span></code>
</summary><div> </p>
</div>
<div class="paragraph">
<p>На английском:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="plaintext">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 { &lt;yyyy-mm-dd&gt; [hh:mm:ss UTC] | &lt;time&gt;[smhd] }
Deal end date (deal duration); default: 14d
-p|--pay { &lt;yyyy-mm-dd&gt; [hh:mm:ss UTC] | &lt;time&gt;[smhd] }
Time for make payment; default: 1d</code></pre>
</div>
</div>
<div class="paragraph">
<p>На русском:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="plaintext">Использование: 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 { &lt;гггг-мм-дд&gt; [чч:мм:сс UTC] | &lt;время&gt;[smhd] }
Время окончания сделки (длительность сделки), по умолчанию: 14d
-p|--pay { &lt;гггг-мм-дд&gt; [чч:мм:сс UTC] | &lt;время&gt;[smhd] }
Время для оплаты сделки; по умолчанию: 1d</code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
<li>
<p>Примеры входных и выходных данных.</p>
<div class="olist loweralpha">
<ol class="loweralpha" type="a">
<li>
<p>Запрос создания сделки:</p>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">curl <span class="nt">-X</span> POST <span class="s2">"https://testnet-dm2.bitdeals.org/api/v1/deal/create"</span> <span class="se">\</span>
<span class="nt">-H</span> <span class="s2">"Content-Type: application/json"</span> <span class="se">\</span>
<span class="nt">-d</span> <span class="s1">'{"at":"https://testnet-dm2.bitdeals.org","type":"Prepayment","seller":{"address": "mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp"},"customer":{"address":"mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC"},"payment":{"sum":"0.01000000"}}'</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">Пример ответа:</strong></span></code>
</summary><div> </p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="json"><span class="p">{</span><span class="nl">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"f38bfeeb1ddac852"</span><span class="p">,</span><span class="w"> </span><span class="nl">"action"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Created"</span><span class="p">,</span><span class="w"> </span><span class="nl">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mynFyJJkRhsbB6y1Q5kTgDGckVz2m9NKH8"</span><span class="p">,</span><span class="w"> </span><span class="nl">"deal"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"order"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Created"</span><span class="p">,</span><span class="w"> </span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Prepayment"</span><span class="p">,</span><span class="w"> </span><span class="nl">"code"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ae6d226b2fe5ce009f252e65fcf66fd079729ac8"</span><span class="p">,</span><span class="w"> </span><span class="nl">"at"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://testnet-dm2.bitdeals.org"</span><span class="p">,</span><span class="w"> </span><span class="nl">"date"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2025-10-21 09:08:12 UTC"</span><span class="p">,</span><span class="w"> </span><span class="nl">"salt"</span><span class="p">:</span><span class="w"> </span><span class="s2">"343c82c2"</span><span class="p">,</span><span class="w"> </span><span class="nl">"seller"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp"</span><span class="p">,</span><span class="w"> </span><span class="nl">"rating"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0+, 32%"</span><span class="p">},</span><span class="w"> </span><span class="nl">"customer"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC"</span><span class="p">,</span><span class="w"> </span><span class="nl">"rating"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0+, 45%"</span><span class="p">},</span><span class="w"> </span><span class="nl">"payment"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2N7gRqGakSZaowyqSHSULaPzp7Fy2KKUQQ7"</span><span class="p">,</span><span class="w"> </span><span class="nl">"until"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2025-10-22 09:08:12 UTC"</span><span class="p">,</span><span class="w"> </span><span class="nl">"sum"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0.01 tBTC"</span><span class="p">},</span><span class="w"> </span><span class="nl">"feedback"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"leave_before"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2025-11-04 09:08:12 UTC"</span><span class="p">}},</span><span class="w"> </span><span class="nl">"result"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"success"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"> </span><span class="nl">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"New deal created"</span><span class="p">},</span><span class="w"> </span><span class="nl">"payload"</span><span class="p">:</span><span class="w"> </span><span class="s2">"LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQpIYXNoOiBTSEE1MTIKCmRlYWw6CiAgb3JkZXI6IENyZWF0ZQogIHR5cGU6IFByZXBheW1lbnQKICBhdDogaHR0cHM6Ly90ZXN0bmV0LWRtMi5iaXRkZWFscy5vcmcKICBkYXRlOiAyMDI1LTEwLTIxIDA5OjA4OjEyIFVUQwogIHNhbHQ6IDM0M2M4MmMyCiAgc2VsbGVyOgogICAgYWRkcmVzczogbW51bUhzOUhRTXJ3MlExaUtMTm54OU56RXhTN25NTG15cAogICAgcmF0aW5nOiAwKywgMzIlCiAgY3VzdG9tZXI6CiAgICBhZGRyZXNzOiBtcmFYeDdKcm1BbXVLeXBkSjF2c2VRQlh5U3NkUlpFNUFDCiAgICByYXRpbmc6IDArLCA0NSUKICBwYXltZW50OgogICAgYWRkcmVzczogMk43Z1JxR2FrU1phb3d5cVNIU1VMYVB6cDdGeTJLS1VRUTcKICAgIHVudGlsOiAyMDI1LTEwLTIyIDA5OjA4OjEyIFVUQwogICAgc3VtOiAwLjAxIHRCVEMKICBmZWVkYmFjazoKICAgIGxlYXZlLWJlZm9yZTogMjAyNS0xMS0wNCAwOTowODoxMiBVVEMKLS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0KVmVyc2lvbjogY2MKCndwd0VBUUVLQUFZRkFtajNUWUFBQ2drUURqa3UwOE9pdDFJR1NnUCtMQWR4aUYrNkpISFpDWHJaNlFHdHhZdTQKeGdGeXJub3FmQ3pxaU0xVlF1MDhsbERtUnZ1aFRMTDBQTUxxUGdXUUYvRTBKckt0T0d1YmRVYlBCaWpKbm04eApiVWJjczRaOEtIcjZOOERhRXdnOU9MQVNYbnpVRGVzMGhCUDJsNEViK1JwWmFRdjhUMUFUeW1aVEt3bjNtbTI5CjZoL0hLQnVHS0hXY1U2MG5nQ2c9Cj1kUXdGCi0tLS0tRU5EIFBHUCBTSUdOQVRVUkUtLS0tLQ=="</span><span class="p">}</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
</ol>
</div>
</li>
<li>
<p>Пример вывода команды <code>dm-cli deal create</code>:</p>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">Пример вывода команды 'dm-cli deals create -t prepayment -s mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp -c mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC -s 0.01:</strong></span></code>
</summary><div> </p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="yaml"><span class="s">-----BEGIN PGP SIGNED MESSAGE-----</span>
<span class="na">Hash</span><span class="pi">:</span> <span class="s">SHA512</span>
<span class="na">deal</span><span class="pi">:</span>
<span class="na">order</span><span class="pi">:</span> <span class="s">Confirmed</span>
<span class="na">type</span><span class="pi">:</span> <span class="s">Prepayment</span>
<span class="na">at</span><span class="pi">:</span> <span class="s">https://testnet-dm2.bitdeals.org</span>
<span class="na">date</span><span class="pi">:</span> <span class="s">2025-10-21 09:08:12 UTC</span>
<span class="na">salt</span><span class="pi">:</span> <span class="s">343c82c2</span>
<span class="na">seller</span><span class="pi">:</span>
<span class="na">address</span><span class="pi">:</span> <span class="s">mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp</span>
<span class="na">rating</span><span class="pi">:</span> <span class="s">600+, 32%</span>
<span class="na">customer</span><span class="pi">:</span>
<span class="na">address</span><span class="pi">:</span> <span class="s">mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC</span>
<span class="na">rating</span><span class="pi">:</span> <span class="s">600+, 36%</span>
<span class="na">payment</span><span class="pi">:</span>
<span class="na">address</span><span class="pi">:</span> <span class="s">2N7gRqGakSZaowyqSHSULaPzp7Fy2KKUQQ7</span>
<span class="na">until</span><span class="pi">:</span> <span class="s">2025-10-22 09:08:12 UTC</span>
<span class="na">sum</span><span class="pi">:</span> <span class="s">0.01 tBTC</span>
<span class="na">feedback</span><span class="pi">:</span>
<span class="na">leave-before</span><span class="pi">:</span> <span class="s">2025-11-04 09:08:12 UTC</span>
<span class="na">status</span><span class="pi">:</span> <span class="s">None</span>
<span class="s">-----BEGIN PGP SIGNATURE-----</span>
<span class="na">Version</span><span class="pi">:</span> <span class="s">cc</span>
<span class="s">wpwEAQEKAAYFAmj3UBgACgkQDjku08Oit1JLogQA0PofMslTfBrNCKFfdlAgj/8A</span>
<span class="s">03lXiHPRd36PVzaa8lK6tHmdfs0EFrp28InXLswfksXD/0Hj9SBKrDQz1qxwqXqZ</span>
<span class="s">rGC1RiXqRpHxl++3/lx3AguPPX5QydjDEwKSA3lL2pnsnnqe2edqUttJzunz9LYy</span>
<span class="s">mhdbFlS1jaFzO0w25Ww=</span>
<span class="s">=1TmH</span>
<span class="s">-----END PGP SIGNATURE-----</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
<li>
<p>Команда должна создавать сделку с учётом указанных параметров:</p>
<div class="ulist">
<ul>
<li>
<p>Место (сайт) проведения сделки [<code>deal.at</code>];</p>
</li>
<li>
<p>Стороны сделки [<code>seller</code>, <code>customer</code>];</p>
</li>
<li>
<p>Тип сделки [<code>Prepayment</code>, <code>Postpayment</code>];</p>
</li>
<li>
<p>Сумма сделки в BTC [<code>payment.sum</code>];</p>
</li>
<li>
<p>Длительность сделки [<code>feedback.leave-before</code>];</p>
</li>
<li>
<p>Время для оплаты сделки [<code>payment.until</code>];</p>
</li>
</ul>
</div>
</li>
</ol>
</div>
</div>
<div class="sect2">
<h3 id="_статус_сделки"><a class="anchor" href="#_статус_сделки"></a><a class="link" href="#_статус_сделки">3.5. Статус сделки</a></h3>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Запрос должен происходить в соответствии с синтаксисом:</p>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">Пример сообщения 'dm-cli deal status --help':</strong></span></code>
</summary><div> </p>
</div>
<div class="paragraph">
<p>На английском:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>Usage: dm-cli deal status { &lt;bitcoin_address&gt;|&lt;deal_code&gt; }
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.</pre>
</div>
</div>
<div class="paragraph">
<p>На русском:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>Использование: dm-cli deal status { &lt;биткоин адрес&gt;|&lt;код сделки&gt; }
Показать детали сделки
Чтобы показать детали сделки используйте адрес оплаты сделки или код сделки.
-i|--is-paid Проверить является ли сделка оплаченной. Возвращает exit code 0 если сделка является оплаченной, или не ноль в других случаях.</pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
<li>
<p>Примеры входных и выходных данных.</p>
<div class="olist loweralpha">
<ol class="loweralpha" type="a">
<li>
<p>Запрос статуса сделки:</p>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">curl <span class="nt">-X</span> POST <span class="s2">"https://testnet-dm2.bitdeals.org/api/v1/deal/status"</span> <span class="se">\</span>
<span class="nt">-H</span> <span class="s2">"Content-Type: application/json"</span> <span class="se">\</span>
<span class="nt">-d</span> <span class="s1">'{"address":"3e251d8fdcfa80adf5a3050064fc4ecb01d304d1"}'</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">Пример ответа:</strong></span></code>
</summary><div> </p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="json"><span class="p">{</span><span class="nl">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"207022ea5d39ebb2"</span><span class="p">,</span><span class="w"> </span><span class="nl">"action"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Status"</span><span class="p">,</span><span class="w"> </span><span class="nl">"deal"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"order"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Confirmed"</span><span class="p">,</span><span class="w"> </span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Prepayment"</span><span class="p">,</span><span class="w"> </span><span class="nl">"code"</span><span class="p">:</span><span class="w"> </span><span class="s2">"3e251d8fdcfa80adf5a3050064fc4ecb01d304d1"</span><span class="p">,</span><span class="w"> </span><span class="nl">"at"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://testnet-dm2.bitdeals.org"</span><span class="p">,</span><span class="w"> </span><span class="nl">"date"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2025-10-21 09:02:11 UTC"</span><span class="p">,</span><span class="w"> </span><span class="nl">"salt"</span><span class="p">:</span><span class="w"> </span><span class="s2">"fd986961"</span><span class="p">,</span><span class="w"> </span><span class="nl">"seller"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp"</span><span class="p">,</span><span class="w"> </span><span class="nl">"rating"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0+, 32%"</span><span class="p">},</span><span class="w"> </span><span class="nl">"customer"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC"</span><span class="p">,</span><span class="w"> </span><span class="nl">"rating"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0+, 36%"</span><span class="p">},</span><span class="w"> </span><span class="nl">"payment"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2NCBgmt37qw97ujZFjgmPEWuoYweR4BWT9g"</span><span class="p">,</span><span class="w"> </span><span class="nl">"until"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2025-10-22 09:02:11 UTC"</span><span class="p">,</span><span class="w"> </span><span class="nl">"sum"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0.01 tBTC"</span><span class="p">},</span><span class="w"> </span><span class="nl">"feedback"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"leave_before"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2025-11-04 09:02:11 UTC"</span><span class="p">}},</span><span class="w"> </span><span class="nl">"result"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"success"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"> </span><span class="nl">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Deal status"</span><span class="p">},</span><span class="w"> </span><span class="nl">"payload"</span><span class="p">:</span><span class="w"> </span><span class="s2">"LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQpIYXNoOiBTSEE1MTIKCmRlYWw6CiAgb3JkZXI6IENvbmZpcm1lZAogIHR5cGU6IFByZXBheW1lbnQKICBhdDogaHR0cHM6Ly90ZXN0bmV0LWRtMi5iaXRkZWFscy5vcmcKICBkYXRlOiAyMDI1LTEwLTIxIDA5OjAyOjExIFVUQwogIHNhbHQ6IGZkOTg2OTYxCiAgc2VsbGVyOgogICAgYWRkcmVzczogbW51bUhzOUhRTXJ3MlExaUtMTm54OU56RXhTN25NTG15cAogICAgcmF0aW5nOiA2MDArLCAzMiUKICBjdXN0b21lcjoKICAgIGFkZHJlc3M6IG1yYVh4N0pybUFtdUt5cGRKMXZzZVFCWHlTc2RSWkU1QUMKICAgIHJhdGluZzogNjAwKywgMzYlCiAgcGF5bWVudDoKICAgIGFkZHJlc3M6IDJOQ0JnbXQzN3F3OTd1alpGamdtUEVXdW9Zd2VSNEJXVDlnCiAgICB1bnRpbDogMjAyNS0xMC0yMiAwOTowMjoxMSBVVEMKICAgIHN1bTogMC4wMSB0QlRDCiAgZmVlZGJhY2s6CiAgICBsZWF2ZS1iZWZvcmU6IDIwMjUtMTEtMDQgMDk6MDI6MTEgVVRDCiAgICBzdGF0dXM6IE5vbmUKLS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0KVmVyc2lvbjogY2MKCndwd0VBUUVLQUFZRkFtajNZc0VBQ2drUURqa3UwOE9pdDFLWHpnUC9jd2YrcXI2NGFnSnFrdDBNd2orTzlhb0EKYXE4QndlQXdjc1B0ZEgzMGlhZGZ0c3RidlpmN3Rsc1ppVUxJbHhaTnBRR0VEdUp4czROcVdHTnhwaFlIQ2ZuMAp1T1VRRkZVeTJubmVEUElGSFJhM2I2TFMzQXd3ZGxkWjI1K1ozUmozOU5rQ3BCeGJEMWxWRGJQNWtoOEtwQlVwClNPMnNLRWZIT2hhOXBieHNvWU09Cj1SSUZOCi0tLS0tRU5EIFBHUCBTSUdOQVRVUkUtLS0tLQ=="</span><span class="p">}</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
</ol>
</div>
</li>
<li>
<p>Пример вывода команды <code>dm-cli deal status</code>:</p>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">Пример вывода команды dm-cli deal status 2N7gRqGakSZaowyqSHSULaPzp7Fy2KKUQQ7:</strong></span></code>
</summary><div> </p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="yaml"><span class="s">-----BEGIN PGP SIGNED MESSAGE-----</span>
<span class="na">Hash</span><span class="pi">:</span> <span class="s">SHA512</span>
<span class="na">deal</span><span class="pi">:</span>
<span class="na">order</span><span class="pi">:</span> <span class="s">Create</span>
<span class="na">type</span><span class="pi">:</span> <span class="s">Prepayment</span>
<span class="na">at</span><span class="pi">:</span> <span class="s">https://testnet-dm2.bitdeals.org</span>
<span class="na">date</span><span class="pi">:</span> <span class="s">2025-10-21 09:08:12 UTC</span>
<span class="na">salt</span><span class="pi">:</span> <span class="s">343c82c2</span>
<span class="na">seller</span><span class="pi">:</span>
<span class="na">address</span><span class="pi">:</span> <span class="s">mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp</span>
<span class="na">rating</span><span class="pi">:</span> <span class="s">0+, 32%</span>
<span class="na">customer</span><span class="pi">:</span>
<span class="na">address</span><span class="pi">:</span> <span class="s">mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC</span>
<span class="na">rating</span><span class="pi">:</span> <span class="s">0+, 45%</span>
<span class="na">payment</span><span class="pi">:</span>
<span class="na">address</span><span class="pi">:</span> <span class="s">2N7gRqGakSZaowyqSHSULaPzp7Fy2KKUQQ7</span>
<span class="na">until</span><span class="pi">:</span> <span class="s">2025-10-22 09:08:12 UTC</span>
<span class="na">sum</span><span class="pi">:</span> <span class="s">0.01 tBTC</span>
<span class="na">feedback</span><span class="pi">:</span>
<span class="na">leave-before</span><span class="pi">:</span> <span class="s">2025-11-04 09:08:12 UTC</span>
<span class="s">-----BEGIN PGP SIGNATURE-----</span>
<span class="na">Version</span><span class="pi">:</span> <span class="s">cc</span>
<span class="s">wpwEAQEKAAYFAmj3TYAACgkQDjku08Oit1IGSgP+LAdxiF+6JHHZCXrZ6QGtxYu4</span>
<span class="s">xgFyrnoqfCzqiM1VQu08llDmRvuhTLL0PMLqPgWQF/E0JrKtOGubdUbPBijJnm8x</span>
<span class="s">bUbcs4Z8KHr6N8DaEwg9OLASXnzUDes0hBP2l4Eb+RpZaQv8T1ATymZTKwn3mm29</span>
<span class="s">6h/HKBuGKHWcU60ngCg=</span>
<span class="s">=dQwF</span>
<span class="s">-----END PGP SIGNATURE-----</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
<li>
<p>Проверка <code>--is-paid</code> должна проверять состояние оплаты сделки на основе полученного текста деталей сделки. Для <code>order: Paid</code>, <code>order: Completed</code>, <code>order: Executed</code> - сделка оплачена, соответсвенно, exit code команды должен быть равен 0.</p>
</li>
</ol>
</div>
</div>
<div class="sect2">
<h3 id="_завершение_сделки"><a class="anchor" href="#_завершение_сделки"></a><a class="link" href="#_завершение_сделки">3.6. Завершение сделки</a></h3>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Запрос должен происходить в соответствии с синтаксисом:</p>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">Пример сообщения 'dm-cli deal complete --help':</strong></span></code>
</summary><div> </p>
</div>
<div class="paragraph">
<p>На английском:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>Usage: dm-cli deal complete [options] { &lt;bitcoin_address&gt;|&lt;deal_code&gt; }
Complete a deal
-p|--positive Complete deal with positive feedback. (default action)
-r|--refund &lt;num&gt; Refund % number of a deal sum to the customer. Format: 100.00[%]</pre>
</div>
</div>
<div class="paragraph">
<p>На русском:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>Использование: dm-cli deal complete [параметры] { &lt;биткоин адес&gt;|&lt;код сделки&gt; }
Завершить сделку
-p|--positive Завершить сделку с позитивным отзывом. (действие по умолчанию)
-r|--refund &lt;num&gt; Возврат % от суммы сделки покупателю. Формат: 100.00[%]</pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
<li>
<p>Примеры входных и выходных данных.</p>
<div class="olist loweralpha">
<ol class="loweralpha" type="a">
<li>
<p>Запрос завершения сделки:</p>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">curl <span class="nt">-X</span> POST <span class="s2">"https://testnet-dm2.bitdeals.org/api/v1/deal/complete"</span> <span class="se">\</span>
<span class="nt">-H</span> <span class="s2">"Content-Type: application/json"</span> <span class="se">\</span>
<span class="nt">-d</span> <span class="s1">'{"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}}'</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">Пример ответа:</strong></span></code>
</summary><div> </p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="json"><span class="p">{</span><span class="nl">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"f1c94f5a62e005b4"</span><span class="p">,</span><span class="w"> </span><span class="nl">"action"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Complete"</span><span class="p">,</span><span class="w"> </span><span class="nl">"deal"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"order"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Complete"</span><span class="p">,</span><span class="w"> </span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Postpayment"</span><span class="p">,</span><span class="w"> </span><span class="nl">"code"</span><span class="p">:</span><span class="w"> </span><span class="s2">"d87cc05dd42bf4fb6cc5d231388a254de94b787a"</span><span class="p">,</span><span class="w"> </span><span class="nl">"at"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://testnet-dm2.bitdeals.org"</span><span class="p">,</span><span class="w"> </span><span class="nl">"date"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2025-10-21 11:36:26 UTC"</span><span class="p">,</span><span class="w"> </span><span class="nl">"salt"</span><span class="p">:</span><span class="w"> </span><span class="s2">"8f489443"</span><span class="p">,</span><span class="w"> </span><span class="nl">"seller"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp"</span><span class="p">,</span><span class="w"> </span><span class="nl">"rating"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0+, 32%"</span><span class="p">},</span><span class="w"> </span><span class="nl">"customer"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC"</span><span class="p">,</span><span class="w"> </span><span class="nl">"rating"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0+, 36%"</span><span class="p">},</span><span class="w"> </span><span class="nl">"payment"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2Mvh1UozwwUwuFcmeCqQm7UEKAxnV4ANhAS"</span><span class="p">,</span><span class="w"> </span><span class="nl">"until"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2025-10-22 11:36:26 UTC"</span><span class="p">,</span><span class="w"> </span><span class="nl">"sum"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0.01 tBTC"</span><span class="p">},</span><span class="w"> </span><span class="nl">"feedback"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"leave_before"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2025-11-04 11:36:26 UTC"</span><span class="p">,</span><span class="w"> </span><span class="nl">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Neutral"</span><span class="p">}},</span><span class="w"> </span><span class="nl">"result"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"success"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"> </span><span class="nl">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Completion command accepted"</span><span class="p">},</span><span class="w"> </span><span class="nl">"payload"</span><span class="p">:</span><span class="w"> </span><span class="s2">"CgotLS0tLSBSRVBPUlQgLS0tLS0KClBHUCBzaWduYXR1cmU6IDxmb250IGNvbG9yPSIjMTQ1QTMyIj48Yj52YWxpZC4KPC9iPjwvZm9udD5Nb2R1bGU6IG15bkZ5SkprUmhzYkI2eTFRNWtUZ0RHY2tWejJtOU5LSDgKCkZlZTogMSU="</span><span class="p">}</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
</ol>
</div>
</li>
<li>
<p>Пример вывода команды <code>dm-cli deal complete</code>:</p>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">Пример вывода команды dm-cli deal complete -r 45 2Mvh1UozwwUwuFcmeCqQm7UEKAxnV4ANhAS:</strong></span></code>
</summary><div> </p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="yaml"><span class="na">success</span><span class="pi">:</span> <span class="kc">true</span>
<span class="na">message</span><span class="pi">:</span> <span class="s">Completion command accepted</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
</ol>
</div>
</div>
<div class="sect2">
<h3 id="_отмена_сделки"><a class="anchor" href="#_отмена_сделки"></a><a class="link" href="#_отмена_сделки">3.7. Отмена сделки</a></h3>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Запрос должен происходить в соответствии с синтаксисом:</p>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">Пример сообщения 'dm-cli deal cancel --help':</strong></span></code>
</summary><div> </p>
</div>
<div class="paragraph">
<p>На английском:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>Usage: dm-cli deal cancel [options] &lt;bitcoin_address&gt;
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 &lt;text&gt; Deal cancel reason text message
-s|--signature &lt;sig&gt; Bitcoin signature.</pre>
</div>
</div>
<div class="paragraph">
<p>На русском:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>Использование: dm-cli deal cancel [параметры] &lt;биткоин адрес&gt;
Отменить сделку
Для отмены сделки вы должны подписать адрес оплаты сделки и текст отзыва биткоин
ключом продавца. Например, адрес, отзыв, подпись:
2NEVoXnRgUeb3j17s7pP6DoFHBVHMb94gF5
seller random cancel reason text
IEOGJ5q/a2cWJPMosQmCHNN6RsXF8Xy/UgaazIoY2i5udbw/v38g1/PdWs451dvFr9Iq/Bq5YL2YdpUFTuijQ60=
-m|--message &lt;text&gt; Текст сообщения с причино отмены сделки
-s|--signature &lt;sig&gt; Биткоин подпись.</pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
<li>
<p>Примеры входных и выходных данных.</p>
<div class="olist loweralpha">
<ol class="loweralpha" type="a">
<li>
<p>Запрос завершения сделки:</p>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell">curl <span class="nt">--location</span> <span class="s1">'https://testnet-dm2.bitdeals.org/api/v1/deal/cancel'</span> <span class="se">\</span>
<span class="nt">--form</span> <span class="s1">'type="Postpayment"'</span> <span class="se">\</span>
<span class="nt">--form</span> <span class="s1">'at="https://testnet-dm2.bitdeals.org"'</span> <span class="se">\</span>
<span class="nt">--form</span> <span class="s1">'date="2025-10-21 11:59:41 UTC"'</span> <span class="se">\</span>
<span class="nt">--form</span> <span class="s1">'salt="98b00a5e"'</span> <span class="se">\</span>
<span class="nt">--form</span> <span class="s1">'seller_address="mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp"'</span> <span class="se">\</span>
<span class="nt">--form</span> <span class="s1">'seller_rating="600+, 32%"'</span> <span class="se">\</span>
<span class="nt">--form</span> <span class="s1">'seller_signature="IERJW29usD99pIkyJktK7z24fxdWncr9GoN/bBvfeHELDNj2aMSOC0JzNqQbnnsT3ETA9mEB9gj5YF+AD4ACuwE="'</span> <span class="se">\</span>
<span class="nt">--form</span> <span class="s1">'customer_address="mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC"'</span> <span class="se">\</span>
<span class="nt">--form</span> <span class="s1">'customer_rating="600+, 36%"'</span> <span class="se">\</span>
<span class="nt">--form</span> <span class="s1">'payment_address="2Mt7UW5RqXUaEN7Y93jo67ZgixcLNPDgvvk"'</span> <span class="se">\</span>
<span class="nt">--form</span> <span class="s1">'payment_until="2025-10-22 11:59:41 UTC"'</span> <span class="se">\</span>
<span class="nt">--form</span> <span class="s1">'payment_sum="0.01 tBTC"'</span> <span class="se">\</span>
<span class="nt">--form</span> <span class="s1">'feedback_leave_before="2025-11-04 11:59:41 UTC"'</span> <span class="se">\</span>
<span class="nt">--form</span> <span class="s1">'feedback_status="None"'</span> <span class="se">\</span>
<span class="nt">--form</span> <span class="s1">'feedback_comments="Cancellation comments"'</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">Пример ответа:</strong></span></code>
</summary><div> </p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="json"><span class="p">{</span><span class="nl">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"3f1b2d6409bfa4bd"</span><span class="p">,</span><span class="w"> </span><span class="nl">"action"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Cancelled"</span><span class="p">,</span><span class="w"> </span><span class="nl">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mynFyJJkRhsbB6y1Q5kTgDGckVz2m9NKH8"</span><span class="p">,</span><span class="w"> </span><span class="nl">"deal"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"order"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Cancelled"</span><span class="p">,</span><span class="w"> </span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Postpayment"</span><span class="p">,</span><span class="w"> </span><span class="nl">"code"</span><span class="p">:</span><span class="w"> </span><span class="s2">"6e7fa8bdd6f406bf3f5d253b67730523ea62b03f"</span><span class="p">,</span><span class="w"> </span><span class="nl">"at"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://placard.bitdeals.org"</span><span class="p">,</span><span class="w"> </span><span class="nl">"date"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2024-10-23 10:34:09 UTC"</span><span class="p">,</span><span class="w"> </span><span class="nl">"salt"</span><span class="p">:</span><span class="w"> </span><span class="s2">"6cbf5879"</span><span class="p">,</span><span class="w"> </span><span class="nl">"seller"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mnumHs9HQMrw2Q1iKLNnx9NzExS7nMLmyp"</span><span class="p">,</span><span class="w"> </span><span class="nl">"rating"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0, 0%"</span><span class="p">},</span><span class="w"> </span><span class="nl">"customer"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mraXx7JrmAmuKypdJ1vseQBXySsdRZE5AC"</span><span class="p">,</span><span class="w"> </span><span class="nl">"rating"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0, 0%"</span><span class="p">},</span><span class="w"> </span><span class="nl">"payment"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2NFgvA4f8ibA5jJ6hca1dX9HvBguNTgP6eR"</span><span class="p">,</span><span class="w"> </span><span class="nl">"until"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2024-10-23 15:34:09 UTC"</span><span class="p">,</span><span class="w"> </span><span class="nl">"sum"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0.00519519 tBTC"</span><span class="p">},</span><span class="w"> </span><span class="nl">"feedback"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"leave_before"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2025-07-10 10:34:09 UTC"</span><span class="p">,</span><span class="w"> </span><span class="nl">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Positive"</span><span class="p">,</span><span class="w"> </span><span class="nl">"comments"</span><span class="p">:</span><span class="w"> </span><span class="s2">"random deal cancel message"</span><span class="p">}},</span><span class="w"> </span><span class="nl">"result"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nl">"success"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"> </span><span class="nl">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Deal cancelled"</span><span class="p">},</span><span class="w"> </span><span class="nl">"payload"</span><span class="p">:</span><span class="w"> </span><span class="s2">"CgotLS0tLSBSRVBPUlQgLS0tLS0KClBHUCBzaWduYXR1cmU6IDxmb250IGNvbG9yPSIjMTQ1QTMyIj48Yj52YWxpZC4KPC9iPjwvZm9udD5Nb2R1bGU6IG15bkZ5SkprUmhzYkI2eTFRNWtUZ0RHY2tWejJtOU5LSDgKCkZlZTogMSU="</span><span class="p">}</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
</ol>
</div>
</li>
<li>
<p>Пример вывода команды <code>dm-cli deal cancel</code>:</p>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">Пример вывода команды dm-cli deal cancel -m "Cancellation comments" -s "CgoL&#8230;&#8203;MSU=" 2Mt7UW5RqXUaEN7Y93jo67ZgixcLNPDgvvk:</strong></span></code>
</summary><div> </p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="yaml"><span class="na">success</span><span class="pi">:</span> <span class="kc">true</span>
<span class="na">message</span><span class="pi">:</span> <span class="s">Deal cancelled</span></code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
</ol>
</div>
</div>
<div class="sect2">
<h3 id="_оставлениеегативного_отзыва"><a class="anchor" href="#_оставлениеегативного_отзыва"></a><a class="link" href="#_оставлениеегативного_отзыва">3.8. Оставление негативного отзыва</a></h3>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Запрос должен происходить в соответствии с синтаксисом:</p>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">Пример сообщения 'dm-cli deal negative --help':</strong></span></code>
</summary><div> </p>
</div>
<div class="paragraph">
<p>На английском:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>Usage: dm-cli deal negative [options] &lt;bitcoin_address&gt;
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 &lt;text&gt; Deal feedback text message
-s|--signature &lt;sig&gt; Bitcoin signature.</pre>
</div>
</div>
<div class="paragraph">
<p>На русском:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>Использование: dm-cli deal negative [options] &lt;биткоин адрес&gt;
Оставить негативный отзыв
Для оставления негативного отзыва ва должны подписать адрес оплаты сделки и текст отзыва биткоин
ключом покупателя. Например, адрес, отзыв, подпись:
2NEVoXnRgUeb3j17s7pP6DoFHBVHMb94gF5
customer random feedback text
H1u44C5cyEeKjHqnNnn09B8mIRMdqgR8PD9AeF8mv+cCEqM9HPkcWLrc8a/v2po2YmXJSeya6uy0XaLnmmmO/1o=
-m|--message &lt;text&gt; Текст сообщения отзыва
-s|--signature &lt;sig&gt; Биткоин подпись.</pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
<li>
<p>Примеры входных и выходных данных.</p>
<div class="olist loweralpha">
<ol class="loweralpha" type="a">
<li>
<p>Запрос завершения сделки:</p>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell"></code></pre>
</div>
</div>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">Пример ответа:</strong></span></code>
</summary><div> </p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="json"></code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
</ol>
</div>
</li>
<li>
<p>Пример вывода команды <code>dm-cli deal negative</code>:</p>
<div class="paragraph">
<p> <details><summary>
<code><strong><span class="underline">Пример вывода команды dm-cli deal negative:</strong></span></code>
</summary><div> </p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="yaml"></code></pre>
</div>
</div>
<div class="paragraph">
<p> </div></details> </p>
</div>
</li>
<li>
<p>В результате исполнения команды, указанная сделка должна получить негативный отзыв (status: Negative).</p>
</li>
</ol>
</div>
</div>
</div>
</div>
</div>
</body>
</html>