zcash-sync/openapi.yml

630 lines
15 KiB
YAML

openapi: 3.0.0
info:
title: Warp Sync API
version: 1.2.15
description: |-
This is the fast synchronization, multi account and multi currency
wallet for Ycash and Zcash.
contact:
name: Hanh Huynh Huu
url: "https://ywallet.app"
tags:
- name: config
description: |-
Set the current account. Account methods use the current account.
- Zcash: coin = 0
- Ycash: coin = 1
- name: sync
description: Blockchain Synchronization
- name: account
description: Account Management
- name: payment_uri
description: Payment URI
paths:
/set_active:
post:
tags: [ config ]
operationId: set_active
description: set the current account for a given coin
parameters:
- name: coin
in: query
required: true
schema:
type: integer
format: uint8
minimum: 0
- name: id_account
in: query
required: true
schema:
type: integer
format: uint32
minimum: 1
responses:
'200':
description: ''
/new_account:
post:
tags: [ account ]
operationId: new_account
description: create a new account from a given seed/secret key/viewing key
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AccountSeed'
required: true
responses:
'200':
description: 'account id'
content:
text/plain:
schema:
type: string
'500':
description: 'error message'
/accounts:
get:
operationId: list_accounts
tags: [ account ]
description: get a list of all accounts
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/AccountRec'
'500':
description: 'error message'
/sync:
post:
operationId: sync
tags: [ sync ]
description: Synchronizes with the tip of the blockchain
parameters:
- name: offset
in: query
description: |-
Number of blocks to synchronize from the tip of the blockchain.
For example:
- If 0, sync catches up with the latest block
- If 1, sync synchronizes up to the latest block height - 1
Creates a new checkpoint
schema:
type: integer
format: uint32
minimum: 0
nullable: true
responses:
'200':
description: ''
'500':
description: 'error message'
/rewind:
post:
operationId: rewind
tags: [ sync ]
description: Rewind the blockchain to a previous height
parameters:
- name: height
in: query
description: |-
Requested height to rewind to. Note that this will be rounded
to the nearest checkpoint before this height.
required: true
schema:
type: integer
format: uint32
minimum: 0
responses:
'200':
description: ''
'500':
description: 'error message'
/latest_height:
get:
operationId: get_latest_height
tags: [ sync ]
description: Latest block height and current synced height
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Heights'
'500':
description: 'error message'
/backup:
get:
operationId: get_backup
tags: [ account ]
description: |-
Get the account information needed to make a backup.
The `allow_backup` option must be set in the config file
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Backup'
'500':
description: 'error message'
/balance:
get:
operationId: get_balance
tags: [ account ]
description: Get the account balance in zats
responses:
'200':
description: 'zats'
content:
text/plain:
schema:
type: string
'500':
description: 'error message'
/address:
get:
operationId: get_address
tags: [ account ]
description: Get the account address (z-addr)
responses:
'200':
description: 'zaddr'
content:
text/plain:
schema:
type: string
'500':
description: 'error message'
/tx_history:
get:
operationId: get_tx_history
tags: [ account ]
description: Get the account history
responses:
'200':
description: 'transactions'
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TxRec'
'500':
description: 'error message'
/pay:
post:
operationId: pay
tags: [ account ]
description: Make a payment. The `allow_send` flag must be set in the config file
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Payment'
required: true
responses:
'200':
description: ''
content:
text/plain:
schema:
type: string
'500':
description: 'error message'
/mark_synced:
post:
operationId: mark_synced
tags: [ sync ]
description: |-
Create a checkpoint at the current latest height without actually
doing any synchronization work. Only use it if you have a new account
and you are sure there are no prior transactions.
responses:
'200':
description: ''
'500':
description: 'error message'
/create_offline_tx:
post:
operationId: create_offline_tx
tags: [ account ]
description: Create a transaction for offline signing
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Payment'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Tx'
'500':
description: 'error message'
/sign_offline_tx:
post:
operationId: sign_offline_tx
tags: [ account ]
description: |-
Sign an offline transaction. Tx object must be created by calling
`create_offline_tx` and the secret key must be available in the current
account
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Tx'
required: true
responses:
'200':
description: 'signed raw transaction'
content:
text/plain:
schema:
type: string
'500':
description: 'error message'
/broadcast_tx:
post:
operationId: broadcast_tx
tags: [ account ]
parameters:
- name: tx_hex
in: query
required: true
description: 'signed raw transaction'
schema:
type: string
responses:
'200':
description: 'txid'
content:
text/plain:
schema:
type: string
'500':
description: 'error message'
/new_diversified_address:
get:
operationId: new_diversified_address
tags: [ account ]
description: get a new diversified address
responses:
'200':
description: 'diversified address'
content:
text/plain:
schema:
type: string
'500':
description: 'error message'
/make_payment_uri:
post:
operationId: make_payment_uri
tags: [ payment_uri ]
description: create a payment uri
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentURI'
required: true
responses:
'200':
description: 'payment uri'
content:
text/plain:
schema:
type: string
'500':
description: 'error message'
/parse_payment_uri:
get:
operationId: parse_payment_uri
tags: [ payment_uri ]
description: decode a payment uri
parameters:
- name: uri
in: query
description: 'payment uri'
required: true
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentURI'
'500':
description: 'error message'
components:
schemas:
AccountSeed:
type: object
required:
- coin
- name
properties:
coin:
type: integer
format: uint8
minimum: 0
description: |-
- 0 for zcash,
- 1 for ycash
name:
type: string
description: account name
key:
type: string
nullable: true
description: |-
seed phrase, secret key or viewing key. null for a new account
from a random seed phrase.
index:
type: integer
format: uint32
minimum: 0
nullable: true
description: |-
if key is a seed phrase, this is the index of the sub account.
0 by default
AccountRec:
type: object
required:
- address
- id_account
- name
properties:
id_account:
type: integer
format: uint32
minimum: 1
description: account id
name:
type: string
description: account name
address:
type: string
description: z-address
Heights:
type: object
required:
- latest
- synced
properties:
latest:
description: Latest block height
type: integer
format: uint32
minimum: 0
synced:
description: Latest checkpoint height
type: integer
format: uint32
minimum: 0
Backup:
type: object
required:
- fvk
properties:
seed:
type: string
nullable: true
description: Seed phrase
sk:
type: string
nullable: true
description: Secret key
fvk:
type: string
description: Full viewing key
TxRec:
type: object
required:
- address
- height
- memo
- timestamp
- txid
- value
properties:
txid:
type: string
description: transaction id
height:
type: integer
format: uint32
minimum: 0
description: block height
timestamp:
type: integer
format: uint32
minimum: 0
description: timestamp in secs since epoch
value:
type: integer
format: int64
description: value in zats
address:
type: string
description: zaddr
memo:
type: string
description: memo text
Payment:
type: object
required:
- confirmations
- recipients
properties:
recipients:
type: array
items:
$ref: '#/components/schemas/Recipient'
confirmations:
type: integer
format: uint32
minimum: 0
description: number of confirmations required for a note to be eligible for spending
Recipient:
type: object
required:
- address
- amount
- max_amount_per_note
- memo
- reply_to
- subject
properties:
address:
type: string
description: destination z-addr
amount:
type: integer
format: uint64
minimum: 0
description: amount in zats
reply_to:
type: boolean
description: if true, include sender addr in memo
subject:
type: string
description: subject included in the memo
memo:
type: string
description: memo text
max_amount_per_note:
type: integer
format: uint64
minimum: 0
description: split note if it exceeds this amount
Tx:
type: object
required:
- change
- height
- inputs
- outputs
- ovk
- t_inputs
properties:
height:
type: integer
format: uint32
minimum: 0
description: tx height
t_inputs:
description: transparent inputs
type: array
items:
$ref: '#/components/schemas/TTxIn'
inputs:
description: shielded inputs
type: array
items:
$ref: '#/components/schemas/TxIn'
outputs:
description: outputs
type: array
items:
$ref: '#/components/schemas/TxOut'
change:
description: change addr
type: string
ovk:
description: outgoing viewing key
type: string
TTxIn:
type: object
required:
- amount
- 'n'
- op
- script
properties:
op:
type: string
'n':
type: integer
format: uint32
minimum: 0
amount:
type: integer
format: uint64
minimum: 0
script:
type: string
TxIn:
type: object
required:
- amount
- diversifier
- fvk
- rseed
- witness
properties:
diversifier:
type: string
fvk:
type: string
amount:
type: integer
format: uint64
minimum: 0
rseed:
type: string
witness:
type: string
TxOut:
type: object
required:
- addr
- amount
- memo
- ovk
properties:
addr:
type: string
amount:
type: integer
format: uint64
minimum: 0
ovk:
type: string
memo:
type: string
PaymentURI:
type: object
required:
- address
- amount
- memo
properties:
address:
description: recipient address (taddr or zaddr)
type: string
amount:
description: amount in zats
type: integer
format: uint64
minimum: 0
memo:
description: memo text
type: string