You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1346 lines
41 KiB
1346 lines
41 KiB
openapi: 3.0.0 |
|
info: |
|
description: Joinmarket wallet API |
|
version: "1" |
|
title: Joinmarket wallet API |
|
license: |
|
name: GPLv3 |
|
url: https://www.gnu.org/licenses/gpl-3.0.html |
|
servers: |
|
- url: https://none |
|
description: This API is called locally to a jmwalletd instance, acting as server, for each wallet owner, it is not public. |
|
paths: |
|
/token: |
|
post: |
|
security: |
|
- bearerAuth: [] |
|
summary: The token endpoint is used by the client to obtain an access token using a grant such as refresh token |
|
operationId: token |
|
description: > |
|
Give a refresh token and get back both an access and refresh token. |
|
On initially creating, unlocking or recovering a wallet, store both the refresh and access tokens, the latter is valid for only 30 minutes (must be used for any authenticated call) while the former is for 4 hours (can only be used in the refresh request parameters). Use /token endpoint on a regular basis to get new access and refresh tokens, ideally before access token expiration to avoid authentication errors and in any case, before refresh token expiration. The newly issued tokens must be used in subsequent calls since operation invalidates previously issued tokens. |
|
responses: |
|
'200': |
|
$ref: '#/components/responses/Token-200-OK' |
|
'400': |
|
$ref: '#/components/responses/400-BadRequest' |
|
requestBody: |
|
content: |
|
application/json: |
|
schema: |
|
$ref: '#/components/schemas/TokenRequest' |
|
description: token refresh parameters |
|
/wallet/create: |
|
post: |
|
summary: create a new wallet |
|
operationId: createwallet |
|
description: Give a filename (.jmdat must be included) and a password, create the wallet and get back the seedphrase for the newly persisted wallet file. The wallettype variable must be one of "sw" - segwit native, "sw-legacy" - segwit legacy or "sw-fb" - segwit native with fidelity bonds supported, the last of which is the default. Note that this operation cannot be performed when a wallet is already loaded (unlocked). |
|
responses: |
|
'201': |
|
$ref: '#/components/responses/Create-201-OK' |
|
'400': |
|
$ref: '#/components/responses/400-BadRequest' |
|
'401': |
|
$ref: '#/components/responses/401-Unauthorized' |
|
'409': |
|
$ref: '#/components/responses/409-AlreadyExists' |
|
requestBody: |
|
content: |
|
application/json: |
|
schema: |
|
$ref: '#/components/schemas/CreateWalletRequest' |
|
description: wallet creation parameters |
|
/wallet/recover: |
|
post: |
|
summary: recover a wallet from a seedphrase |
|
operationId: recoverwallet |
|
description: Give a filename (.jmdat must be included), a wallettype, a seedphrase and a password, create the wallet for the newly persisted wallet file. The wallettype variable must be one of "sw" - segwit native, "sw-legacy" - segwit legacy or "sw-fb" - segwit native with fidelity bonds supported, the last of which is the default. The seedphrase must be a single string with words space-separated, and must conform to BIP39 (else 400 is returned). Note that this operation cannot be performed when a wallet is already loaded (unlocked). |
|
responses: |
|
'201': |
|
$ref: '#/components/responses/Create-201-OK' |
|
'400': |
|
$ref: '#/components/responses/400-BadRequest' |
|
'401': |
|
$ref: '#/components/responses/401-Unauthorized' |
|
'409': |
|
$ref: '#/components/responses/409-AlreadyExists' |
|
requestBody: |
|
content: |
|
application/json: |
|
schema: |
|
$ref: '#/components/schemas/RecoverWalletRequest' |
|
description: wallet recovery parameters |
|
/wallet/{walletname}/unlock: |
|
post: |
|
summary: decrypt an existing wallet |
|
operationId: unlockwallet |
|
description: Give the password for the specified (existing) wallet file, and it will be decrypted ready for use. Note that this operation cannot be performed when another wallet is already loaded (unlocked). |
|
parameters: |
|
- name: walletname |
|
in: path |
|
description: name of wallet including .jmdat |
|
required: true |
|
schema: |
|
type: string |
|
responses: |
|
'200': |
|
$ref: '#/components/responses/Unlock-200-OK' |
|
'400': |
|
$ref: '#/components/responses/400-BadRequest' |
|
'401': |
|
$ref: '#/components/responses/401-Unauthorized' |
|
'404': |
|
$ref: '#/components/responses/404-NotFound' |
|
'409': |
|
$ref: '#/components/responses/409-AlreadyExists' |
|
requestBody: |
|
content: |
|
application/json: |
|
schema: |
|
$ref: '#/components/schemas/UnlockWalletRequest' |
|
description: wallet unlocking parameters |
|
/wallet/{walletname}/lock: |
|
get: |
|
security: |
|
- bearerAuth: [] |
|
summary: block access to a currently decrypted wallet |
|
operationId: lockwallet |
|
description: After this (authenticated) action, the wallet will not be readable or writeable. |
|
parameters: |
|
- name: walletname |
|
in: path |
|
description: name of wallet including .jmdat |
|
required: true |
|
schema: |
|
type: string |
|
responses: |
|
'200': |
|
$ref: '#/components/responses/Lock-200-OK' |
|
'400': |
|
$ref: '#/components/responses/400-BadRequest' |
|
/wallet/{walletname}/display: |
|
get: |
|
security: |
|
- bearerAuth: [] |
|
summary: get detailed breakdown of wallet contents by account. |
|
operationId: displaywallet |
|
description: get detailed breakdown of wallet contents by account. |
|
parameters: |
|
- name: walletname |
|
in: path |
|
description: name of wallet including .jmdat |
|
required: true |
|
schema: |
|
type: string |
|
responses: |
|
'200': |
|
$ref: '#/components/responses/Display-200-OK' |
|
'400': |
|
$ref: '#/components/responses/400-BadRequest' |
|
'404': |
|
$ref: '#/components/responses/404-NotFound' |
|
/session: |
|
get: |
|
security: |
|
- {} |
|
- bearerAuth: [] |
|
summary: get current status of backend |
|
operationId: session |
|
description: get whether a wallet is loaded and whether coinjoin/maker are happening. if an auth token is provided, which is optional, it will be validated. |
|
responses: |
|
'200': |
|
$ref: '#/components/responses/Session-200-OK' |
|
'404': |
|
$ref: '#/components/responses/404-NotFound' |
|
/getinfo: |
|
get: |
|
security: |
|
- {} |
|
summary: get info on backend |
|
operationId: version |
|
description: get information about backend, including the version of Joinmarket running. |
|
responses: |
|
'200': |
|
$ref: '#/components/responses/Getinfo-200-OK' |
|
/wallet/all: |
|
get: |
|
summary: get current available wallets |
|
operationId: listwallets |
|
description: get all wallet filenames in standard location as a list |
|
responses: |
|
'200': |
|
$ref: '#/components/responses/ListWallets-200-OK' |
|
'404': |
|
$ref: '#/components/responses/404-NotFound' |
|
/wallet/yieldgen/report: |
|
get: |
|
summary: get latest report on yield generating activity |
|
operationId: yieldgenreport |
|
description: > |
|
Get list of coinjoins taken part in as maker (across all wallets). |
|
Data returned as list of strings, each one in the same comma separated format as found in yigen-statement.csv. |
|
Note that this returns all lines in the file, including the lines that are only present to represent the starting of a bot. Those lines contain the word Connected and can be thus discarded. |
|
The header line is also delivered and so can be ignored as per the client requirements. |
|
responses: |
|
'200': |
|
$ref: '#/components/responses/YieldGenReport-200-OK' |
|
'404': |
|
$ref: '#/components/responses/404-NotFound' |
|
/wallet/{walletname}/address/new/{mixdepth}: |
|
get: |
|
security: |
|
- bearerAuth: [] |
|
summary: get a fresh address in the given account for depositing funds. |
|
operationId: getaddress |
|
description: get a fresh address in the given account for depositing funds. |
|
parameters: |
|
- name: walletname |
|
in: path |
|
description: name of wallet including .jmdat |
|
required: true |
|
schema: |
|
type: string |
|
- name: mixdepth |
|
in: path |
|
description: account or mixdepth to source the address from (0..4) |
|
required: true |
|
schema: |
|
type: string |
|
responses: |
|
'200': |
|
$ref: '#/components/responses/GetAddress-200-OK' |
|
'400': |
|
$ref: '#/components/responses/400-BadRequest' |
|
'404': |
|
$ref: '#/components/responses/404-NotFound' |
|
/wallet/{walletname}/rescanblockchain/{blockheight}: |
|
get: |
|
security: |
|
- bearerAuth: [] |
|
summary: Rescan the blockchain from a given blockheight |
|
operationId: rescanblockchain |
|
description: Use this operation on recovered wallets to re-sync the wallet |
|
parameters: |
|
- name: walletname |
|
in: path |
|
description: name of wallet including .jmdat |
|
required: true |
|
schema: |
|
type: string |
|
- name: blockheight |
|
in: path |
|
description: starting block height for the rescan |
|
required: true |
|
schema: |
|
type: integer |
|
responses: |
|
'200': |
|
$ref: '#/components/responses/RescanBlockchain-200-OK' |
|
'400': |
|
$ref: '#/components/responses/400-BadRequest' |
|
'404': |
|
$ref: '#/components/responses/404-NotFound' |
|
/wallet/{walletname}/getrescaninfo: |
|
get: |
|
security: |
|
- bearerAuth: [] |
|
summary: get the current rescan status |
|
operationId: getrescaninfo |
|
description: get the current rescan status |
|
parameters: |
|
- name: walletname |
|
in: path |
|
description: name of wallet including .jmdat |
|
required: true |
|
schema: |
|
type: string |
|
responses: |
|
'200': |
|
$ref: '#/components/responses/RescanInfo-200-OK' |
|
'400': |
|
$ref: '#/components/responses/400-BadRequest' |
|
'404': |
|
$ref: '#/components/responses/404-NotFound' |
|
/wallet/{walletname}/address/timelock/new/{lockdate}: |
|
get: |
|
security: |
|
- bearerAuth: [] |
|
summary: get a fresh timelock address |
|
operationId: gettimelockaddress |
|
description: get a new timelocked address, for depositing funds, to create a fidelity bond, which will automatically be used when the maker is started. specify the date in YYYY-mm as the last path parameter. Note that mixdepth is not specified as timelock addresses are always in mixdepth(account) zero. |
|
parameters: |
|
- name: walletname |
|
in: path |
|
description: name of wallet including .jmdat |
|
required: true |
|
schema: |
|
type: string |
|
example: wallet.jmdat |
|
- name: lockdate |
|
in: path |
|
description: month whose first day will be the end of the timelock, for this address. |
|
required: true |
|
schema: |
|
type: string # note- not a standard date-time string for OpenAPI, so not marked as such |
|
example: "2021-09" |
|
responses: |
|
'200': |
|
$ref: '#/components/responses/GetAddress-200-OK' |
|
'400': |
|
$ref: '#/components/responses/400-BadRequest' |
|
'404': |
|
$ref: '#/components/responses/404-NotFound' |
|
/wallet/{walletname}/utxos: |
|
get: |
|
security: |
|
- bearerAuth: [] |
|
summary: list details of all utxos currently in the wallet. |
|
operationId: listutxos |
|
description: list details of all utxos currently in the wallet. |
|
parameters: |
|
- name: walletname |
|
in: path |
|
description: name of wallet including .jmdat |
|
required: true |
|
schema: |
|
type: string |
|
example: "2021-09" |
|
responses: |
|
'200': |
|
$ref: '#/components/responses/ListUtxos-200-OK' |
|
'400': |
|
$ref: '#/components/responses/400-BadRequest' |
|
'404': |
|
$ref: '#/components/responses/404-NotFound' |
|
/wallet/{walletname}/taker/direct-send: |
|
post: |
|
security: |
|
- bearerAuth: [] |
|
summary: create and broadcast a transaction (without coinjoin) |
|
operationId: directsend |
|
description: create and broadcast a transaction (without coinjoin) |
|
parameters: |
|
- name: walletname |
|
in: path |
|
description: name of wallet including .jmdat |
|
required: true |
|
schema: |
|
type: string |
|
requestBody: |
|
content: |
|
application/json: |
|
schema: |
|
$ref: '#/components/schemas/DirectSendRequest' |
|
description: transaction creation parameters |
|
responses: |
|
'200': |
|
$ref: '#/components/responses/DirectSend-200-Accepted' |
|
'400': |
|
$ref: '#/components/responses/400-BadRequest' |
|
'404': |
|
$ref: '#/components/responses/404-NotFound' |
|
'409': |
|
$ref: '#/components/responses/409-TransactionFailed' |
|
/wallet/{walletname}/maker/start: |
|
post: |
|
security: |
|
- bearerAuth: [] |
|
summary: Start the yield generator service. |
|
operationId: startmaker |
|
description: Start the yield generator service with the configuration settings specified in the POST request. Note that if fidelity bonds are enabled in the wallet, and a timelock address has been generated, and then funded, the fidelity bond will automatically be advertised without any specific configuration in this request. Note that if the wallet does not have confirmed coins, or another taker or maker coinjoin service is already running, the maker will not start. |
|
parameters: |
|
- name: walletname |
|
in: path |
|
description: name of wallet including .jmdat |
|
required: true |
|
schema: |
|
type: string |
|
example: wallet.jmdat |
|
requestBody: |
|
content: |
|
application/json: |
|
schema: |
|
$ref: '#/components/schemas/StartMakerRequest' |
|
description: yield generator config parameters |
|
responses: |
|
# note we use a default response, no data returned: |
|
'202': |
|
$ref: '#/components/responses/202-Accepted' |
|
'400': |
|
$ref: '#/components/responses/400-BadRequest' |
|
'401': |
|
$ref: '#/components/responses/401-Unauthorized' |
|
'404': |
|
$ref: '#/components/responses/404-NotFound' |
|
'409': |
|
$ref: '#/components/responses/409-No-Coins' |
|
'503': |
|
$ref: '#/components/responses/503-ServiceUnavailable' |
|
/wallet/{walletname}/maker/stop: |
|
get: |
|
security: |
|
- bearerAuth: [] |
|
summary: stop the yield generator service |
|
operationId: stopmaker |
|
description: stop the yield generator service |
|
parameters: |
|
- name: walletname |
|
in: path |
|
description: name of wallet including .jmdat |
|
required: true |
|
schema: |
|
type: string |
|
responses: |
|
'202': |
|
$ref: '#/components/responses/202-Accepted' |
|
'400': |
|
$ref: '#/components/responses/400-BadRequest' |
|
'401': |
|
$ref: "#/components/responses/401-Unauthorized" |
|
'404': |
|
$ref: '#/components/responses/404-NotFound' |
|
/wallet/{walletname}/taker/coinjoin: |
|
post: |
|
security: |
|
- bearerAuth: [] |
|
summary: initiate a coinjoin as taker |
|
operationId: docoinjoin |
|
description: initiate a coinjoin as taker |
|
parameters: |
|
- name: walletname |
|
in: path |
|
description: name of wallet including .jmdat |
|
required: true |
|
schema: |
|
type: string |
|
requestBody: |
|
content: |
|
application/json: |
|
schema: |
|
$ref: '#/components/schemas/DoCoinjoinRequest' |
|
description: taker side coinjoin parameters |
|
responses: |
|
'202': |
|
$ref: '#/components/responses/202-Accepted' |
|
'400': |
|
$ref: '#/components/responses/400-BadRequest' |
|
'401': |
|
$ref: '#/components/responses/401-Unauthorized' |
|
'404': |
|
$ref: '#/components/responses/404-NotFound' |
|
'409': |
|
$ref: '#/components/responses/409-NoConfig' |
|
'503': |
|
$ref: '#/components/responses/503-ServiceUnavailable' |
|
/wallet/{walletname}/taker/schedule: |
|
post: |
|
security: |
|
- bearerAuth: [] |
|
summary: create and run a schedule of transactions |
|
operationId: runschedule |
|
description: Creates and then starts a schedule of transactions. |
|
parameters: |
|
- name: walletname |
|
in: path |
|
description: name of wallet including .jmdat |
|
required: true |
|
schema: |
|
type: string |
|
requestBody: |
|
content: |
|
application/json: |
|
schema: |
|
$ref: '#/components/schemas/RunScheduleRequest' |
|
description: taker side schedule parameters |
|
responses: |
|
'202': |
|
$ref: '#/components/responses/RunSchedule-202-OK' |
|
'400': |
|
$ref: '#/components/responses/400-BadRequest' |
|
'401': |
|
$ref: '#/components/responses/401-Unauthorized' |
|
'404': |
|
$ref: '#/components/responses/404-NotFound' |
|
'409': |
|
$ref: '#/components/responses/409-NoConfig' |
|
'503': |
|
$ref: '#/components/responses/503-ServiceUnavailable' |
|
get: |
|
security: |
|
- bearerAuth: [] |
|
summary: get the schedule that is currently running |
|
operationId: getschedule |
|
description: Get the current transaction schedule if one is running. |
|
parameters: |
|
- name: walletname |
|
in: path |
|
description: name of the wallet including .jmdat |
|
required: true |
|
schema: |
|
type: string |
|
responses: |
|
'200': |
|
$ref: '#/components/responses/GetSchedule-200-OK' |
|
'400': |
|
$ref: '#/components/responses/400-BadRequest' |
|
'404': |
|
$ref: '#/components/responses/404-NotFound' |
|
/wallet/{walletname}/taker/stop: |
|
get: |
|
security: |
|
- bearerAuth: [] |
|
summary: stop a running coinjoin attempt |
|
operationId: stopcoinjoin |
|
description: stop a running coinjoin attempt |
|
parameters: |
|
- name: walletname |
|
in: path |
|
description: name of wallet including .jmdat |
|
required: true |
|
schema: |
|
type: string |
|
responses: |
|
'202': |
|
$ref: '#/components/responses/202-Accepted' |
|
'400': |
|
$ref: '#/components/responses/400-BadRequest' |
|
'401': |
|
$ref: "#/components/responses/401-Unauthorized" |
|
'404': |
|
$ref: '#/components/responses/404-NotFound' |
|
/wallet/{walletname}/configset: |
|
post: |
|
security: |
|
- bearerAuth: [] |
|
summary: change a config variable |
|
operationId: configsetting |
|
description: change a config variable (for the duration of this backend daemon process instance) |
|
parameters: |
|
- name: walletname |
|
in: path |
|
description: name of wallet including .jmdat |
|
required: true |
|
schema: |
|
type: string |
|
requestBody: |
|
content: |
|
application/json: |
|
schema: |
|
$ref: '#/components/schemas/ConfigSetRequest' |
|
description: config editing parameters |
|
responses: |
|
'200': |
|
$ref: '#/components/responses/ConfigSet-200-OK' |
|
'400': |
|
$ref: '#/components/responses/400-BadRequest' |
|
'409': |
|
$ref: '#/components/responses/409-NoConfig' |
|
/wallet/{walletname}/configget: |
|
post: |
|
security: |
|
- bearerAuth: [] |
|
summary: get the value of a specific config setting |
|
operationId: configget |
|
description: Get the value of a specific config setting. Note values are always returned as string. |
|
parameters: |
|
- name: walletname |
|
in: path |
|
description: name of wallet including .jmdat |
|
required: true |
|
schema: |
|
type: string |
|
requestBody: |
|
content: |
|
application/json: |
|
schema: |
|
$ref: '#/components/schemas/ConfigGetRequest' |
|
responses: |
|
'200': |
|
$ref: '#/components/responses/ConfigGet-200-OK' |
|
'400': |
|
$ref: '#/components/responses/400-BadRequest' |
|
'409': |
|
$ref: '#/components/responses/409-NoConfig' |
|
/wallet/{walletname}/freeze: |
|
post: |
|
security: |
|
- bearerAuth: [] |
|
summary: freeze or unfreeze an individual utxo for spending |
|
operationId: freeze |
|
description: freeze or unfreeze an individual utxo for spending |
|
parameters: |
|
- name: walletname |
|
in: path |
|
description: name of wallet including .jmdat |
|
required: true |
|
schema: |
|
type: string |
|
requestBody: |
|
content: |
|
application/json: |
|
schema: |
|
$ref: '#/components/schemas/FreezeRequest' |
|
description: utxo string and freeze toggle as boolean |
|
responses: |
|
'200': |
|
$ref: '#/components/responses/Freeze-200-OK' |
|
'400': |
|
$ref: '#/components/responses/400-BadRequest' |
|
/wallet/{walletname}/getseed: |
|
get: |
|
security: |
|
- bearerAuth: [] |
|
summary: get the mnemonic recovery phrase with the optional passphrase |
|
operationId: getseed |
|
description: Get the mnemonic recovery phrase with the optional passphrase. Not the response is a sentence with few line breaks. |
|
parameters: |
|
- name: walletname |
|
in: path |
|
description: name of the wallet including .jmdat |
|
required: true |
|
schema: |
|
type: string |
|
responses: |
|
'200': |
|
$ref: '#/components/responses/GetSeed-200-OK' |
|
'400': |
|
$ref: '#/components/responses/400-BadRequest' |
|
components: |
|
securitySchemes: |
|
bearerAuth: |
|
type: http |
|
scheme: bearer |
|
bearerFormat: JWT |
|
schemas: |
|
FreezeRequest: |
|
type: object |
|
required: |
|
- utxo-string |
|
- freeze |
|
properties: |
|
utxo-string: |
|
type: string |
|
freeze: |
|
type: boolean |
|
ConfigSetRequest: |
|
type: object |
|
required: |
|
- section |
|
- field |
|
- value |
|
properties: |
|
section: |
|
type: string |
|
field: |
|
type: string |
|
value: |
|
type: string |
|
ConfigGetRequest: |
|
type: object |
|
required: |
|
- section |
|
- field |
|
properties: |
|
section: |
|
type: string |
|
field: |
|
type: string |
|
ConfigGetResponse: |
|
type: object |
|
required: |
|
- configvalue |
|
properties: |
|
configvalue: |
|
type: string |
|
ConfigSetResponse: |
|
type: object |
|
FreezeResponse: |
|
type: object |
|
DoCoinjoinRequest: |
|
type: object |
|
required: |
|
- mixdepth |
|
- amount_sats |
|
- counterparties |
|
- destination |
|
properties: |
|
mixdepth: |
|
type: integer |
|
example: 0 |
|
amount_sats: |
|
type: integer |
|
example: 100000000 |
|
counterparties: |
|
type: integer |
|
example: 9 |
|
destination: |
|
type: string |
|
example: "bcrt1qujp2x2fv437493sm25gfjycns7d39exjnpptzw" |
|
txfee: |
|
example: 6 |
|
description: Bitcoin miner fee to use for transaction. A number higher than 1000 is used as satoshi per kvB tx fee. The number lower than that uses the dynamic fee estimation of blockchain provider as confirmation target. |
|
TokenRequest: |
|
type: object |
|
required: |
|
- grant_type |
|
- refresh_token |
|
properties: |
|
grant_type: |
|
type: string |
|
refresh_token: |
|
type: string |
|
TokenResponse: |
|
type: object |
|
required: |
|
- token |
|
- token_type |
|
- expires_in |
|
- scope |
|
- refresh_token |
|
properties: |
|
token: |
|
type: string |
|
token_type: |
|
type: string |
|
expires_in: |
|
type: integer |
|
scope: |
|
type: string |
|
refresh_token: |
|
type: string |
|
RunScheduleRequest: |
|
type: object |
|
required: |
|
- destinations |
|
properties: |
|
destination_addresses: |
|
type: array |
|
items: |
|
type: string |
|
example: "bcrt1qujp2x2fv437493sm25gfjycns7d39exjnpptzw" |
|
tumbler_options: |
|
type: object |
|
properties: |
|
addrcount: |
|
type: integer |
|
minmakercount: |
|
type: integer |
|
makercountrange: |
|
type: array |
|
items: |
|
type: number |
|
minItems: 2 |
|
maxItems: 2 |
|
example: [9, 1] |
|
mixdepthcount: |
|
type: integer |
|
mintxcount: |
|
type: integer |
|
txcountparams: |
|
type: array |
|
items: |
|
type: number |
|
minItems: 2 |
|
maxItems: 2 |
|
example: [2, 1] |
|
timelambda: |
|
type: number |
|
stage1_timelambda_increase: |
|
type: number |
|
liquiditywait: |
|
type: integer |
|
waittime: |
|
type: number |
|
mixdepthsrc: |
|
type: integer |
|
restart: |
|
type: boolean |
|
schedulefile: |
|
type: string |
|
mincjamount: |
|
type: integer |
|
amtmixdepths: |
|
type: integer |
|
rounding_chance: |
|
type: number |
|
rounding_sigfig_weights: |
|
type: array |
|
items: |
|
type: number |
|
minItems: 5 |
|
maxItems: 5 |
|
example: [55, 15, 25, 65, 40] |
|
StartMakerRequest: |
|
type: object |
|
required: |
|
- txfee |
|
- cjfee_a |
|
- cjfee_r |
|
- ordertype |
|
- minsize |
|
properties: |
|
txfee: |
|
type: string |
|
example: "0" |
|
cjfee_a: |
|
type: string |
|
example: "5000" |
|
cjfee_r: |
|
type: string |
|
example: "0.00004" |
|
ordertype: |
|
type: string |
|
example: "reloffer" |
|
minsize: |
|
type: string |
|
example: "8000000" |
|
GetAddressResponse: |
|
type: object |
|
required: |
|
- address |
|
properties: |
|
address: |
|
type: string |
|
example: "bcrt1qujp2x2fv437493sm25gfjycns7d39exjnpptzw" |
|
ListWalletsResponse: |
|
type: object |
|
properties: |
|
wallets: |
|
type: array |
|
items: |
|
type: string |
|
example: wallet.jmdat |
|
YieldGenReportResponse: |
|
type: array |
|
items: |
|
type: string |
|
example: "2021/10/26 16:40:21,133986791,1,200000000,2680,2680,0.08," |
|
GetinfoResponse: |
|
type: object |
|
required: |
|
- version |
|
properties: |
|
version: |
|
type: string |
|
example: "0.9.10" |
|
RescanBlockchainResponse: |
|
type: object |
|
required: |
|
- walletname |
|
properties: |
|
walletname: |
|
type: string |
|
example: "wallet.jmdat" |
|
RescanInfoResponse: |
|
type: object |
|
required: |
|
- rescanning |
|
properties: |
|
rescanning: |
|
type: boolean |
|
progress: |
|
type: number |
|
example: 0.04665404082350701 |
|
SessionResponse: |
|
type: object |
|
required: |
|
- session |
|
- maker_running |
|
- coinjoin_in_process |
|
- wallet_name |
|
- rescanning |
|
properties: |
|
session: |
|
type: boolean |
|
maker_running: |
|
type: boolean |
|
coinjoin_in_process: |
|
type: boolean |
|
schedule: |
|
type: array |
|
items: |
|
type: array |
|
items: |
|
oneOf: |
|
- type: string |
|
- type: integer |
|
wallet_name: |
|
type: string |
|
example: wallet.jmdat |
|
offer_list: |
|
type: array |
|
items: |
|
type: object |
|
properties: |
|
oid: |
|
type: integer |
|
ordertype: |
|
type: string |
|
minsize: |
|
type: integer |
|
maxsize: |
|
type: integer |
|
txfee: |
|
type: integer |
|
cjfee: |
|
type: string |
|
nickname: |
|
type: string |
|
rescanning: |
|
type: boolean |
|
block_height: |
|
type: integer |
|
ListUtxosResponse: |
|
type: object |
|
properties: |
|
utxos: |
|
type: array |
|
items: |
|
type: object |
|
properties: |
|
utxo: |
|
type: string |
|
address: |
|
type: string |
|
path: |
|
type: string |
|
label: |
|
type: string |
|
value: |
|
type: integer |
|
tries: |
|
type: integer |
|
tries_remaining: |
|
type: integer |
|
external: |
|
type: boolean |
|
mixdepth: |
|
type: integer |
|
confirmations: |
|
type: integer |
|
frozen: |
|
type: boolean |
|
WalletDisplayResponse: |
|
type: object |
|
required: |
|
- walletname |
|
- walletinfo |
|
properties: |
|
walletname: |
|
type: string |
|
walletinfo: |
|
type: object |
|
required: |
|
- wallet_name |
|
- total_balance |
|
- accounts |
|
properties: |
|
wallet_name: |
|
type: string |
|
total_balance: |
|
type: string |
|
available_balance: |
|
type: string |
|
accounts: |
|
type: array |
|
items: |
|
type: object |
|
properties: |
|
account: |
|
type: string |
|
account_balance: |
|
type: string |
|
available_balance: |
|
type: string |
|
branches: |
|
type: array |
|
items: |
|
type: object |
|
properties: |
|
branch: |
|
type: string |
|
balance: |
|
type: string |
|
available_balance: |
|
type: string |
|
entries: |
|
type: array |
|
items: |
|
type: object |
|
properties: |
|
hd_path: |
|
type: string |
|
address: |
|
type: string |
|
amount: |
|
type: string |
|
available_balance: |
|
type: string |
|
status: |
|
type: string |
|
label: |
|
type: string |
|
extradata: |
|
type: string |
|
CreateWalletResponse: |
|
type: object |
|
required: |
|
- walletname |
|
- seedphrase |
|
- token |
|
- refresh_token |
|
properties: |
|
walletname: |
|
type: string |
|
example: wallet.jmdat |
|
seedphrase: |
|
type: string |
|
token: |
|
type: string |
|
format: byte |
|
refresh_token: |
|
type: string |
|
format: byte |
|
UnlockWalletResponse: |
|
type: object |
|
required: |
|
- walletname |
|
- token |
|
- refresh_token |
|
properties: |
|
walletname: |
|
type: string |
|
example: wallet.jmdat |
|
token: |
|
type: string |
|
format: byte |
|
refresh_token: |
|
type: string |
|
format: byte |
|
DirectSendResponse: |
|
type: object |
|
required: |
|
- txinfo |
|
properties: |
|
txinfo: |
|
type: object |
|
properties: |
|
hex: |
|
type: string |
|
inputs: |
|
type: array |
|
items: |
|
type: object |
|
properties: |
|
outpoint: |
|
type: string |
|
scriptSig: |
|
type: string |
|
nSequence: |
|
type: number |
|
witness: |
|
type: string |
|
outputs: |
|
type: array |
|
items: |
|
type: object |
|
properties: |
|
value_sats: |
|
type: number |
|
scriptPubKey: |
|
type: string |
|
address: |
|
type: string |
|
txid: |
|
type: string |
|
nLockTime: |
|
type: number |
|
nVersion: |
|
type: number |
|
GetSeedResponse: |
|
type: object |
|
required: |
|
- seedphrase |
|
properties: |
|
seedphrase: |
|
type: string |
|
GetScheduleResponse: |
|
type: object |
|
required: |
|
- schedule |
|
properties: |
|
schedule: |
|
type: array |
|
items: |
|
type: array |
|
items: |
|
oneOf: |
|
- type: string |
|
- type: integer |
|
LockWalletResponse: |
|
type: object |
|
required: |
|
- walletname |
|
- already_locked |
|
properties: |
|
walletname: |
|
type: string |
|
example: wallet.jmdat |
|
already_locked: |
|
type: boolean |
|
example: false |
|
CreateWalletRequest: |
|
type: object |
|
required: |
|
- walletname |
|
- password |
|
- wallettype |
|
properties: |
|
walletname: |
|
type: string |
|
example: wallet.jmdat |
|
password: |
|
type: string |
|
format: password |
|
example: hunter2 |
|
wallettype: |
|
type: string |
|
example: "sw-fb" |
|
RecoverWalletRequest: |
|
type: object |
|
required: |
|
- walletname |
|
- password |
|
- wallettype |
|
- seedphrase |
|
properties: |
|
walletname: |
|
type: string |
|
example: wallet.jmdat |
|
password: |
|
type: string |
|
format: password |
|
example: hunter2 |
|
wallettype: |
|
type: string |
|
example: "sw-fb" |
|
seedphrase: |
|
type: string |
|
example: "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about" |
|
UnlockWalletRequest: |
|
type: object |
|
required: |
|
- password |
|
properties: |
|
password: |
|
type: string |
|
format: password |
|
example: hunter2 |
|
DirectSendRequest: |
|
type: object |
|
required: |
|
- mixdepth |
|
- amount_sats |
|
- destination |
|
properties: |
|
mixdepth: |
|
type: integer |
|
example: 0 |
|
amount_sats: |
|
type: integer |
|
example: 100000000 |
|
destination: |
|
type: string |
|
example: bcrt1qu7k4dppungsqp95nwc7ansqs9m0z95h72j9mze |
|
txfee: |
|
type: integer |
|
example: 6 |
|
description: Bitcoin miner fee to use for transaction. A number higher than 1000 is used as satoshi per kvB tx fee. The number lower than that uses the dynamic fee estimation of blockchain provider as confirmation target. |
|
ErrorMessage: |
|
type: object |
|
properties: |
|
message: |
|
type: string |
|
error_description: |
|
type: string |
|
|
|
responses: |
|
# Success responses |
|
DirectSend-200-Accepted: |
|
description: "transaction broadcast OK." |
|
content: |
|
application/json: |
|
schema: |
|
$ref: "#/components/schemas/DirectSendResponse" |
|
ListUtxos-200-OK: |
|
description: "successful retrieval of utxo list" |
|
content: |
|
application/json: |
|
schema: |
|
$ref: "#/components/schemas/ListUtxosResponse" |
|
ConfigGet-200-OK: |
|
description: "successful retrieval of config value" |
|
content: |
|
application/json: |
|
schema: |
|
$ref: "#/components/schemas/ConfigGetResponse" |
|
ConfigSet-200-OK: |
|
description: "successful update of config value" |
|
content: |
|
application/json: |
|
schema: |
|
$ref: "#/components/schemas/ConfigSetResponse" |
|
GetAddress-200-OK: |
|
description: "successful retrieval of new address" |
|
content: |
|
application/json: |
|
schema: |
|
$ref: "#/components/schemas/GetAddressResponse" |
|
ListWallets-200-OK: |
|
description: "successful response to listwallets" |
|
content: |
|
application/json: |
|
schema: |
|
$ref: "#/components/schemas/ListWalletsResponse" |
|
Token-200-OK: |
|
description: "Access token obtained successfully" |
|
content: |
|
application/json: |
|
schema: |
|
$ref: "#/components/schemas/TokenResponse" |
|
Session-200-OK: |
|
description: "successful heartbeat response" |
|
content: |
|
application/json: |
|
schema: |
|
$ref: "#/components/schemas/SessionResponse" |
|
Getinfo-200-OK: |
|
description: "successful Joinmarket getinfo response" |
|
content: |
|
application/json: |
|
schema: |
|
$ref: "#/components/schemas/GetinfoResponse" |
|
RescanBlockchain-200-OK: |
|
description: "Blockchain rescan started successfully" |
|
content: |
|
application/json: |
|
schema: |
|
$ref: "#/components/schemas/RescanBlockchainResponse" |
|
RescanInfo-200-OK: |
|
description: "Blockchain rescan status retrieved successfully" |
|
content: |
|
application/json: |
|
schema: |
|
$ref: "#/components/schemas/RescanInfoResponse" |
|
Create-201-OK: |
|
description: "wallet created successfully" |
|
content: |
|
application/json: |
|
schema: |
|
$ref: "#/components/schemas/CreateWalletResponse" |
|
Recover-201-OK: |
|
description: "wallet recovered successfully" |
|
content: |
|
application/json: |
|
schema: |
|
$ref: "#/components/schemas/CreateWalletResponse" |
|
Unlock-200-OK: |
|
description: "wallet unlocked successfully" |
|
content: |
|
application/json: |
|
schema: |
|
$ref: "#/components/schemas/UnlockWalletResponse" |
|
Display-200-OK: |
|
description: "wallet display contents retrieved successfully." |
|
content: |
|
application/json: |
|
schema: |
|
$ref: "#/components/schemas/WalletDisplayResponse" |
|
Lock-200-OK: |
|
description: "wallet locked successfully" |
|
content: |
|
application/json: |
|
schema: |
|
$ref: "#/components/schemas/LockWalletResponse" |
|
GetSeed-200-OK: |
|
description: "seedphrase retrieved successfully" |
|
content: |
|
application/json: |
|
schema: |
|
$ref: "#/components/schemas/GetSeedResponse" |
|
Freeze-200-OK: |
|
description: "freeze or unfreeze utxo action completed successfully" |
|
content: |
|
application/json: |
|
schema: |
|
$ref: "#/components/schemas/FreezeResponse" |
|
RunSchedule-202-OK: |
|
description: "schedule started successfully" |
|
content: |
|
application/json: |
|
schema: |
|
$ref: "#/components/schemas/GetScheduleResponse" |
|
GetSchedule-200-OK: |
|
description: "schedule retrieved successfully" |
|
content: |
|
application/json: |
|
schema: |
|
$ref: "#/components/schemas/GetScheduleResponse" |
|
YieldGenReport-200-OK: |
|
description: "get list of coinjoins taken part in as maker (across all wallets)" |
|
content: |
|
application/json: |
|
schema: |
|
$ref: "#/components/schemas/YieldGenReportResponse" |
|
202-Accepted: |
|
description: The request has been submitted successfully for processing, but the processing has not been completed. |
|
# Clientside error responses |
|
400-BadRequest: |
|
description: Bad request format. |
|
content: |
|
application/json: |
|
schema: |
|
$ref: '#/components/schemas/ErrorMessage' |
|
401-Unauthorized: |
|
description: Unable to authorise the credentials that were supplied. |
|
content: |
|
application/json: |
|
schema: |
|
$ref: '#/components/schemas/ErrorMessage' |
|
409-AlreadyExists: |
|
description: Unable to complete request because object already exists. |
|
content: |
|
application/json: |
|
schema: |
|
$ref: '#/components/schemas/ErrorMessage' |
|
409-NoConfig: |
|
description: Unable to complete request because config settings are missing. |
|
content: |
|
application/json: |
|
schema: |
|
$ref: '#/components/schemas/ErrorMessage' |
|
409-TransactionFailed: |
|
description: Transaction failed to broadcast. |
|
content: |
|
application/json: |
|
schema: |
|
$ref: '#/components/schemas/ErrorMessage' |
|
409-No-Coins: |
|
description: Maker could not start without confirmed balance. |
|
content: |
|
application/json: |
|
schema: |
|
$ref: '#/components/schemas/ErrorMessage' |
|
404-NotFound: |
|
description: Item not found. |
|
content: |
|
application/json: |
|
schema: |
|
$ref: '#/components/schemas/ErrorMessage' |
|
# Serverside error responses |
|
503-ServiceUnavailable: |
|
description: The server is not ready to process the request. |
|
content: |
|
application/json: |
|
schema: |
|
$ref: '#/components/schemas/ErrorMessage'
|
|
|