@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api TokenJay API services
@base https://api.tokenjay.app/
@endpoints 27
@hint download_for_search
@toc payment(2), mosaik(10), tokens(5), sigusd(3), sigrsv(3), peers(1), createbabel(1), cancelbabel(1), ageusd(1)

@group payment
@endpoint POST /payment/addrequest
@desc Creates a new payment request. Will return request id to check for transaction state and ergopay url to show the user as QR code
@required {nanoErg: int(int64), receiverAddress: str}
@optional {tokenId: str, tokenRawAmount: int(int64), senderAddress: str, message: str}
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endgroup

@group mosaik
@endpoint POST /mosaik/tokenburn/prepare
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endpoint POST /mosaik/babelfee/newoffer/new-input
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endpoint POST /mosaik/babelfee/newoffer/doit
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endgroup

@group tokens
@endpoint GET /tokens/prices/{tokenId}
@desc Lists price and available volume for a certain token
@required {tokenId: str}
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endpoint GET /tokens/prices/all
@desc Lists all token prices and available volume
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endpoint GET /tokens/listGenuine
@desc Lists all genuine tokens known
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endpoint GET /tokens/listBlocked
@desc Lists all blocked tokens
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endpoint GET /tokens/check/{tokenId}/{tokenName}
@desc Check a token verification
@required {tokenId: str, tokenName: str}
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endgroup

@group sigusd
@endpoint GET /sigusd/price
@desc Lists price and available volume for SigmaUSD
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endpoint GET /sigusd/exchange/{amount}/info
@desc Calculates SigUSD exchange
@required {amount: int(int64)}
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endpoint GET /sigusd/exchange/
@desc Builds ErgoPayRequest for SigUSD exchange
@required {amount: int(int64), address: str}
@optional {checkRate: int(int64)=0, executionFee: int(int64)=0}
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endgroup

@group sigrsv
@endpoint GET /sigrsv/price
@desc Lists price and available volume for SigmaRSV
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endpoint GET /sigrsv/exchange/{amount}/info
@desc Calculates SigRSV exchange
@required {amount: int(int64)}
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endpoint GET /sigrsv/exchange/
@desc Builds ErgoPayRequest for SigRSV exchange
@required {amount: int(int64), address: str}
@optional {checkRate: int(int64)=0, executionFee: int(int64)=0}
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endgroup

@group peers
@endpoint GET /peers/list
@desc Lists known peers sorted by block height
@optional {unreachable: bool=false # Set to true to show unreachable peers in the list, closedApi: bool=false # Set to true to show peers not open to be connected, limit: int(int32)=50}
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endgroup

@group payment
@endpoint GET /payment/state/{requestId}
@desc Returns the state of a payment request. Please note that payment requests are purged after some time, so persist the state at your side when needed
@required {requestId: str}
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endgroup

@group mosaik
@endpoint GET /mosaik/tokenburn
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endpoint GET /mosaik/tokenburn/get/{uuid}
@required {uuid: str}
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endpoint GET /mosaik/boxconsolidation/consolidate/{p2pkaddress}
@required {p2pkaddress: str}
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endpoint GET /mosaik/boxconsolidation/
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endpoint GET /mosaik/babelfee/notificationcheck
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endpoint GET /mosaik/babelfee/newoffer
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endpoint GET /mosaik/babelfee/
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endgroup

@group createbabel
@endpoint GET /createbabel/{address}
@required {address: str, tokenId: str, ergAmount: int(int64), tokenAmount: int(int64)}
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endgroup

@group cancelbabel
@endpoint GET /cancelbabel/{boxId}
@required {boxId: str}
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endgroup

@group ageusd
@endpoint GET /ageusd/info
@desc Returns state of AgeUSD at this moment
@returns(200) OK
@errors {400: Bad Request, 401: Unauthorized, 404: Not Found, 409: Conflict}

@endgroup

@end
