Adding API DOCs

This commit is contained in:
Chris Troutner
2026-06-03 14:42:50 -07:00
parent 38391ce9d6
commit 0d2b3600b3
11 changed files with 3348 additions and 8 deletions
@@ -0,0 +1,844 @@
/*
apidoc blocks for generic /level entity CRUD routes.
Handlers are generated from ENTITY_CONFIG in crud-handlers.js.
*/
/**
* @apiDefine LevelPublic
* @apiPermission public
*/
/**
* @apiDefine PostDataFields
* @apiBody {String} postData.addr Author cash address
* @apiBody {String} postData.text Post or reply message text
* @apiBody {Number} postData.seen Unix epoch milliseconds
* @apiBody {Number} postData.blockHeight Block height when indexed
*/
/**
* @api {post} /level/post Create post record
* @apiName CreateLevelPost
* @apiGroup Level Post
* @apiUse LevelPublic
*
* @apiDescription Create or overwrite a post document keyed by transaction id.
*
* @apiBody {String} txid Post transaction id (key)
* @apiUse PostDataFields
*
* @apiExample Example usage:
* curl -H "Content-Type: application/json" -X POST localhost:5021/level/post \
* -d '{"txid":"abc...","postData":{"addr":"bitcoincash:q...","text":"hello","seen":1500000000000,"blockHeight":600000}}'
*
* @apiSuccess {String} txid Transaction id written
* @apiSuccess {Boolean} success true
*/
/**
* @api {get} /level/post/:txid Get post record
* @apiName GetLevelPost
* @apiGroup Level Post
* @apiUse LevelPublic
*
* @apiParam {String} txid Post transaction id
*
* @apiExample Example usage:
* curl -X GET localhost:5021/level/post/abc...
*
* @apiSuccess {String} addr Author cash address
* @apiSuccess {String} text Post text
* @apiSuccess {Number} seen Unix epoch milliseconds
* @apiSuccess {Number} blockHeight Block height when indexed
*/
/**
* @api {put} /level/post/:txid Update post record
* @apiName UpdateLevelPost
* @apiGroup Level Post
* @apiUse LevelPublic
*
* @apiParam {String} txid Post transaction id
* @apiUse PostDataFields
*
* @apiExample Example usage:
* curl -H "Content-Type: application/json" -X PUT localhost:5021/level/post/abc... \
* -d '{"postData":{"addr":"bitcoincash:q...","text":"updated","seen":1500000000000,"blockHeight":600000}}'
*
* @apiSuccess {String} txid Transaction id updated
* @apiSuccess {Boolean} success true
*/
/**
* @api {delete} /level/post/:txid Delete post record
* @apiName DeleteLevelPost
* @apiGroup Level Post
* @apiUse LevelPublic
*
* @apiParam {String} txid Post transaction id
*
* @apiExample Example usage:
* curl -X DELETE localhost:5021/level/post/abc...
*
* @apiSuccess {String} txid Transaction id deleted
* @apiSuccess {Boolean} success true
*/
/**
* @apiDefine ReplyLinkFields
* @apiBody {String} parentData.parentTxid Parent post transaction id
* @apiBody {String} parentData.childTxid Reply transaction id
* @apiBody {Number} parentData.blockHeight Block height when indexed
*/
/**
* @api {post} /level/postparent Create reply parent link
* @apiName CreateLevelPostParent
* @apiGroup Level Post Parent
* @apiUse LevelPublic
*
* @apiDescription Store the forward link from a reply transaction to its parent post. Keyed by child (reply) txid.
*
* @apiBody {String} txid Reply transaction id (key)
* @apiUse ReplyLinkFields
*
* @apiExample Example usage:
* curl -H "Content-Type: application/json" -X POST localhost:5021/level/postparent \
* -d '{"txid":"child...","parentData":{"parentTxid":"parent...","childTxid":"child...","blockHeight":600000}}'
*
* @apiSuccess {String} txid Reply transaction id written
* @apiSuccess {Boolean} success true
*/
/**
* @api {get} /level/postparent/:txid Get reply parent link
* @apiName GetLevelPostParent
* @apiGroup Level Post Parent
* @apiUse LevelPublic
*
* @apiParam {String} txid Reply transaction id
*
* @apiExample Example usage:
* curl -X GET localhost:5021/level/postparent/child...
*
* @apiSuccess {String} parentTxid Parent post transaction id
* @apiSuccess {String} childTxid Reply transaction id
* @apiSuccess {Number} blockHeight Block height when indexed
*/
/**
* @api {put} /level/postparent/:txid Update reply parent link
* @apiName UpdateLevelPostParent
* @apiGroup Level Post Parent
* @apiUse LevelPublic
*
* @apiParam {String} txid Reply transaction id
* @apiUse ReplyLinkFields
*
* @apiExample Example usage:
* curl -H "Content-Type: application/json" -X PUT localhost:5021/level/postparent/child... \
* -d '{"parentData":{"parentTxid":"parent...","childTxid":"child...","blockHeight":600000}}'
*
* @apiSuccess {String} txid Reply transaction id updated
* @apiSuccess {Boolean} success true
*/
/**
* @api {delete} /level/postparent/:txid Delete reply parent link
* @apiName DeleteLevelPostParent
* @apiGroup Level Post Parent
* @apiUse LevelPublic
*
* @apiParam {String} txid Reply transaction id
*
* @apiExample Example usage:
* curl -X DELETE localhost:5021/level/postparent/child...
*
* @apiSuccess {String} txid Reply transaction id deleted
* @apiSuccess {Boolean} success true
*/
/**
* @apiDefine ChildLinkFields
* @apiBody {String} childData.parentTxid Parent post transaction id
* @apiBody {String} childData.childTxid Reply transaction id
* @apiBody {Number} childData.blockHeight Block height when indexed
*/
/**
* @api {post} /level/postchild Create reply child link
* @apiName CreateLevelPostChild
* @apiGroup Level Post Child
* @apiUse LevelPublic
*
* @apiDescription Store the reverse link from a parent post to a reply. Keyed by parentTxid:childTxid composite key.
*
* @apiBody {String} key Composite key parentTxid:childTxid
* @apiUse ChildLinkFields
*
* @apiExample Example usage:
* curl -H "Content-Type: application/json" -X POST localhost:5021/level/postchild \
* -d '{"key":"parent...:child...","childData":{"parentTxid":"parent...","childTxid":"child...","blockHeight":600000}}'
*
* @apiSuccess {String} key Composite key written
* @apiSuccess {Boolean} success true
*/
/**
* @api {get} /level/postchild/:key Get reply child link
* @apiName GetLevelPostChild
* @apiGroup Level Post Child
* @apiUse LevelPublic
*
* @apiParam {String} key Composite key parentTxid:childTxid
*
* @apiExample Example usage:
* curl -X GET localhost:5021/level/postchild/parent...:child...
*
* @apiSuccess {String} parentTxid Parent post transaction id
* @apiSuccess {String} childTxid Reply transaction id
* @apiSuccess {Number} blockHeight Block height when indexed
*/
/**
* @api {put} /level/postchild/:key Update reply child link
* @apiName UpdateLevelPostChild
* @apiGroup Level Post Child
* @apiUse LevelPublic
*
* @apiParam {String} key Composite key parentTxid:childTxid
* @apiUse ChildLinkFields
*
* @apiExample Example usage:
* curl -H "Content-Type: application/json" -X PUT localhost:5021/level/postchild/parent...:child... \
* -d '{"childData":{"parentTxid":"parent...","childTxid":"child...","blockHeight":600000}}'
*
* @apiSuccess {String} key Composite key updated
* @apiSuccess {Boolean} success true
*/
/**
* @api {delete} /level/postchild/:key Delete reply child link
* @apiName DeleteLevelPostChild
* @apiGroup Level Post Child
* @apiUse LevelPublic
*
* @apiParam {String} key Composite key parentTxid:childTxid
*
* @apiExample Example usage:
* curl -X DELETE localhost:5021/level/postchild/parent...:child...
*
* @apiSuccess {String} key Composite key deleted
* @apiSuccess {Boolean} success true
*/
/**
* @apiDefine LikeDataFields
* @apiBody {String} likeData.addr Liker cash address
* @apiBody {String} likeData.postTxid Liked post transaction id
* @apiBody {Number} likeData.seen Unix epoch milliseconds
* @apiBody {Number} [likeData.tip] Tip amount in satoshis
* @apiBody {Number} likeData.blockHeight Block height when indexed
*/
/**
* @api {post} /level/like Create like record
* @apiName CreateLevelLike
* @apiGroup Level Like
* @apiUse LevelPublic
*
* @apiBody {String} txid Like transaction id (key)
* @apiUse LikeDataFields
*
* @apiExample Example usage:
* curl -H "Content-Type: application/json" -X POST localhost:5021/level/like \
* -d '{"txid":"abc...","likeData":{"addr":"bitcoincash:q...","postTxid":"post...","seen":1500000000000,"blockHeight":600000}}'
*
* @apiSuccess {String} txid Like transaction id written
* @apiSuccess {Boolean} success true
*/
/**
* @api {get} /level/like/:txid Get like record
* @apiName GetLevelLike
* @apiGroup Level Like
* @apiUse LevelPublic
*
* @apiParam {String} txid Like transaction id
*
* @apiExample Example usage:
* curl -X GET localhost:5021/level/like/abc...
*
* @apiSuccess {String} addr Liker cash address
* @apiSuccess {String} postTxid Liked post transaction id
* @apiSuccess {Number} seen Unix epoch milliseconds
* @apiSuccess {Number} [tip] Tip amount in satoshis
* @apiSuccess {Number} blockHeight Block height when indexed
*/
/**
* @api {put} /level/like/:txid Update like record
* @apiName UpdateLevelLike
* @apiGroup Level Like
* @apiUse LevelPublic
*
* @apiParam {String} txid Like transaction id
* @apiUse LikeDataFields
*
* @apiExample Example usage:
* curl -H "Content-Type: application/json" -X PUT localhost:5021/level/like/abc... \
* -d '{"likeData":{"addr":"bitcoincash:q...","postTxid":"post...","seen":1500000000000,"blockHeight":600000}}'
*
* @apiSuccess {String} txid Like transaction id updated
* @apiSuccess {Boolean} success true
*/
/**
* @api {delete} /level/like/:txid Delete like record
* @apiName DeleteLevelLike
* @apiGroup Level Like
* @apiUse LevelPublic
*
* @apiParam {String} txid Like transaction id
*
* @apiExample Example usage:
* curl -X DELETE localhost:5021/level/like/abc...
*
* @apiSuccess {String} txid Like transaction id deleted
* @apiSuccess {Boolean} success true
*/
/**
* @apiDefine NameDataFields
* @apiBody {String} nameData.name Display name
* @apiBody {String} nameData.txid Provenance transaction id
* @apiBody {String} nameData.addr Cash address
* @apiBody {Number} nameData.seen Unix epoch milliseconds
* @apiBody {Number} nameData.blockHeight Block height when indexed
*/
/**
* @api {post} /level/name Create name record
* @apiName CreateLevelName
* @apiGroup Level Name
* @apiUse LevelPublic
*
* @apiBody {String} addr Cash address (key)
* @apiUse NameDataFields
*
* @apiExample Example usage:
* curl -H "Content-Type: application/json" -X POST localhost:5021/level/name \
* -d '{"addr":"bitcoincash:q...","nameData":{"name":"memo","txid":"abc...","addr":"bitcoincash:q...","seen":1500000000000,"blockHeight":600000}}'
*
* @apiSuccess {String} addr Cash address written
* @apiSuccess {Boolean} success true
*/
/**
* @api {get} /level/name/:addr Get name record
* @apiName GetLevelName
* @apiGroup Level Name
* @apiUse LevelPublic
*
* @apiParam {String} addr Cash address
*
* @apiExample Example usage:
* curl -X GET localhost:5021/level/name/bitcoincash:q...
*
* @apiSuccess {String} name Display name
* @apiSuccess {String} txid Provenance transaction id
* @apiSuccess {String} addr Cash address
* @apiSuccess {Number} seen Unix epoch milliseconds
* @apiSuccess {Number} blockHeight Block height when indexed
*/
/**
* @api {put} /level/name/:addr Update name record
* @apiName UpdateLevelName
* @apiGroup Level Name
* @apiUse LevelPublic
*
* @apiParam {String} addr Cash address
* @apiUse NameDataFields
*
* @apiExample Example usage:
* curl -H "Content-Type: application/json" -X PUT localhost:5021/level/name/bitcoincash:q... \
* -d '{"nameData":{"name":"memo","txid":"abc...","addr":"bitcoincash:q...","seen":1500000000000,"blockHeight":600000}}'
*
* @apiSuccess {String} addr Cash address updated
* @apiSuccess {Boolean} success true
*/
/**
* @api {delete} /level/name/:addr Delete name record
* @apiName DeleteLevelName
* @apiGroup Level Name
* @apiUse LevelPublic
*
* @apiParam {String} addr Cash address
*
* @apiExample Example usage:
* curl -X DELETE localhost:5021/level/name/bitcoincash:q...
*
* @apiSuccess {String} addr Cash address deleted
* @apiSuccess {Boolean} success true
*/
/**
* @apiDefine ProfileDataFields
* @apiBody {String} profileData.text Profile message text
* @apiBody {String} profileData.txid Provenance transaction id
* @apiBody {String} profileData.addr Cash address
* @apiBody {Number} profileData.seen Unix epoch milliseconds
* @apiBody {Number} profileData.blockHeight Block height when indexed
*/
/**
* @api {post} /level/profile Create profile record
* @apiName CreateLevelProfile
* @apiGroup Level Profile
* @apiUse LevelPublic
*
* @apiBody {String} addr Cash address (key)
* @apiUse ProfileDataFields
*
* @apiExample Example usage:
* curl -H "Content-Type: application/json" -X POST localhost:5021/level/profile \
* -d '{"addr":"bitcoincash:q...","profileData":{"text":"my bio","txid":"abc...","addr":"bitcoincash:q...","seen":1500000000000,"blockHeight":600000}}'
*
* @apiSuccess {String} addr Cash address written
* @apiSuccess {Boolean} success true
*/
/**
* @api {get} /level/profile/:addr Get profile record
* @apiName GetLevelProfile
* @apiGroup Level Profile
* @apiUse LevelPublic
*
* @apiParam {String} addr Cash address
*
* @apiExample Example usage:
* curl -X GET localhost:5021/level/profile/bitcoincash:q...
*
* @apiSuccess {String} text Profile message text
* @apiSuccess {String} txid Provenance transaction id
* @apiSuccess {String} addr Cash address
* @apiSuccess {Number} seen Unix epoch milliseconds
* @apiSuccess {Number} blockHeight Block height when indexed
*/
/**
* @api {put} /level/profile/:addr Update profile record
* @apiName UpdateLevelProfile
* @apiGroup Level Profile
* @apiUse LevelPublic
*
* @apiParam {String} addr Cash address
* @apiUse ProfileDataFields
*
* @apiExample Example usage:
* curl -H "Content-Type: application/json" -X PUT localhost:5021/level/profile/bitcoincash:q... \
* -d '{"profileData":{"text":"updated bio","txid":"abc...","addr":"bitcoincash:q...","seen":1500000000000,"blockHeight":600000}}'
*
* @apiSuccess {String} addr Cash address updated
* @apiSuccess {Boolean} success true
*/
/**
* @api {delete} /level/profile/:addr Delete profile record
* @apiName DeleteLevelProfile
* @apiGroup Level Profile
* @apiUse LevelPublic
*
* @apiParam {String} addr Cash address
*
* @apiExample Example usage:
* curl -X DELETE localhost:5021/level/profile/bitcoincash:q...
*
* @apiSuccess {String} addr Cash address deleted
* @apiSuccess {Boolean} success true
*/
/**
* @apiDefine ProfilePicDataFields
* @apiBody {String} profilePicData.url Avatar image URL
* @apiBody {String} profilePicData.txid Provenance transaction id
* @apiBody {String} profilePicData.addr Cash address
* @apiBody {Number} profilePicData.seen Unix epoch milliseconds
* @apiBody {Number} profilePicData.blockHeight Block height when indexed
*/
/**
* @api {post} /level/profilepic Create profile picture record
* @apiName CreateLevelProfilePic
* @apiGroup Level Profile Pic
* @apiUse LevelPublic
*
* @apiBody {String} addr Cash address (key)
* @apiUse ProfilePicDataFields
*
* @apiExample Example usage:
* curl -H "Content-Type: application/json" -X POST localhost:5021/level/profilepic \
* -d '{"addr":"bitcoincash:q...","profilePicData":{"url":"https://example.com/pic.jpg","txid":"abc...","addr":"bitcoincash:q...","seen":1500000000000,"blockHeight":600000}}'
*
* @apiSuccess {String} addr Cash address written
* @apiSuccess {Boolean} success true
*/
/**
* @api {get} /level/profilepic/:addr Get profile picture record
* @apiName GetLevelProfilePic
* @apiGroup Level Profile Pic
* @apiUse LevelPublic
*
* @apiParam {String} addr Cash address
*
* @apiExample Example usage:
* curl -X GET localhost:5021/level/profilepic/bitcoincash:q...
*
* @apiSuccess {String} url Avatar image URL
* @apiSuccess {String} txid Provenance transaction id
* @apiSuccess {String} addr Cash address
* @apiSuccess {Number} seen Unix epoch milliseconds
* @apiSuccess {Number} blockHeight Block height when indexed
*/
/**
* @api {put} /level/profilepic/:addr Update profile picture record
* @apiName UpdateLevelProfilePic
* @apiGroup Level Profile Pic
* @apiUse LevelPublic
*
* @apiParam {String} addr Cash address
* @apiUse ProfilePicDataFields
*
* @apiExample Example usage:
* curl -H "Content-Type: application/json" -X PUT localhost:5021/level/profilepic/bitcoincash:q... \
* -d '{"profilePicData":{"url":"https://example.com/pic.jpg","txid":"abc...","addr":"bitcoincash:q...","seen":1500000000000,"blockHeight":600000}}'
*
* @apiSuccess {String} addr Cash address updated
* @apiSuccess {Boolean} success true
*/
/**
* @api {delete} /level/profilepic/:addr Delete profile picture record
* @apiName DeleteLevelProfilePic
* @apiGroup Level Profile Pic
* @apiUse LevelPublic
*
* @apiParam {String} addr Cash address
*
* @apiExample Example usage:
* curl -X DELETE localhost:5021/level/profilepic/bitcoincash:q...
*
* @apiSuccess {String} addr Cash address deleted
* @apiSuccess {Boolean} success true
*/
/**
* @apiDefine FollowDataFields
* @apiBody {String} followData.followerAddr Follower cash address
* @apiBody {String} followData.followeePkHash Followee public key hash (hex)
* @apiBody {Boolean} followData.unfollow True for unfollow actions
* @apiBody {String} followData.txid Provenance transaction id
* @apiBody {Number} followData.seen Unix epoch milliseconds
* @apiBody {Number} followData.blockHeight Block height when indexed
*/
/**
* @api {post} /level/follow Create follow record
* @apiName CreateLevelFollow
* @apiGroup Level Follow
* @apiUse LevelPublic
*
* @apiDescription Store a follow or unfollow edge. Key is followerAddr:followeePkHash.
*
* @apiBody {String} key Composite key followerAddr:followeePkHash
* @apiUse FollowDataFields
*
* @apiExample Example usage:
* curl -H "Content-Type: application/json" -X POST localhost:5021/level/follow \
* -d '{"key":"bitcoincash:q...:abc123","followData":{"followerAddr":"bitcoincash:q...","followeePkHash":"abc123","unfollow":false,"txid":"tx...","seen":1500000000000,"blockHeight":600000}}'
*
* @apiSuccess {String} key Composite key written
* @apiSuccess {Boolean} success true
*/
/**
* @api {get} /level/follow/:key Get follow record
* @apiName GetLevelFollow
* @apiGroup Level Follow
* @apiUse LevelPublic
*
* @apiParam {String} key Composite key followerAddr:followeePkHash
*
* @apiExample Example usage:
* curl -X GET localhost:5021/level/follow/bitcoincash:q...:abc123
*
* @apiSuccess {String} followerAddr Follower cash address
* @apiSuccess {String} followeePkHash Followee public key hash
* @apiSuccess {Boolean} unfollow True for unfollow actions
* @apiSuccess {String} txid Provenance transaction id
* @apiSuccess {Number} seen Unix epoch milliseconds
* @apiSuccess {Number} blockHeight Block height when indexed
*/
/**
* @api {put} /level/follow/:key Update follow record
* @apiName UpdateLevelFollow
* @apiGroup Level Follow
* @apiUse LevelPublic
*
* @apiParam {String} key Composite key followerAddr:followeePkHash
* @apiUse FollowDataFields
*
* @apiExample Example usage:
* curl -H "Content-Type: application/json" -X PUT localhost:5021/level/follow/bitcoincash:q...:abc123 \
* -d '{"followData":{"followerAddr":"bitcoincash:q...","followeePkHash":"abc123","unfollow":true,"txid":"tx...","seen":1500000000000,"blockHeight":600000}}'
*
* @apiSuccess {String} key Composite key updated
* @apiSuccess {Boolean} success true
*/
/**
* @api {delete} /level/follow/:key Delete follow record
* @apiName DeleteLevelFollow
* @apiGroup Level Follow
* @apiUse LevelPublic
*
* @apiParam {String} key Composite key followerAddr:followeePkHash
*
* @apiExample Example usage:
* curl -X DELETE localhost:5021/level/follow/bitcoincash:q...:abc123
*
* @apiSuccess {String} key Composite key deleted
* @apiSuccess {Boolean} success true
*/
/**
* @apiDefine RoomDataFields
* @apiBody {String} roomData.room Topic or room name
* @apiBody {String} roomData.txid Provenance transaction id
* @apiBody {Number} roomData.seen Unix epoch milliseconds
* @apiBody {String} roomData.type Record type (e.g. "post")
* @apiBody {Number} roomData.blockHeight Block height when indexed
* @apiBody {String} [roomData.addr] Author cash address for topic follows
*/
/**
* @api {post} /level/room Create room record
* @apiName CreateLevelRoom
* @apiGroup Level Room
* @apiUse LevelPublic
*
* @apiDescription Store a topic post or topic follow index entry. Key is roomName:txid.
*
* @apiBody {String} key Composite key roomName:txid
* @apiUse RoomDataFields
*
* @apiExample Example usage:
* curl -H "Content-Type: application/json" -X POST localhost:5021/level/room \
* -d '{"key":"general:abc...","roomData":{"room":"general","txid":"abc...","seen":1500000000000,"type":"post","blockHeight":600000}}'
*
* @apiSuccess {String} key Composite key written
* @apiSuccess {Boolean} success true
*/
/**
* @api {get} /level/room/:key Get room record
* @apiName GetLevelRoom
* @apiGroup Level Room
* @apiUse LevelPublic
*
* @apiParam {String} key Composite key roomName:txid
*
* @apiExample Example usage:
* curl -X GET localhost:5021/level/room/general:abc...
*
* @apiSuccess {String} room Topic or room name
* @apiSuccess {String} txid Provenance transaction id
* @apiSuccess {Number} seen Unix epoch milliseconds
* @apiSuccess {String} type Record type
* @apiSuccess {Number} blockHeight Block height when indexed
*/
/**
* @api {put} /level/room/:key Update room record
* @apiName UpdateLevelRoom
* @apiGroup Level Room
* @apiUse LevelPublic
*
* @apiParam {String} key Composite key roomName:txid
* @apiUse RoomDataFields
*
* @apiExample Example usage:
* curl -H "Content-Type: application/json" -X PUT localhost:5021/level/room/general:abc... \
* -d '{"roomData":{"room":"general","txid":"abc...","seen":1500000000000,"type":"post","blockHeight":600000}}'
*
* @apiSuccess {String} key Composite key updated
* @apiSuccess {Boolean} success true
*/
/**
* @api {delete} /level/room/:key Delete room record
* @apiName DeleteLevelRoom
* @apiGroup Level Room
* @apiUse LevelPublic
*
* @apiParam {String} key Composite key roomName:txid
*
* @apiExample Example usage:
* curl -X DELETE localhost:5021/level/room/general:abc...
*
* @apiSuccess {String} key Composite key deleted
* @apiSuccess {Boolean} success true
*/
/**
* @apiDefine ProcessErrorDataFields
* @apiBody {String} errorData.error Error message
* @apiBody {Number} errorData.ts Unix epoch milliseconds when logged
* @apiBody {Number} errorData.blockHeight Block height when indexed
*/
/**
* @api {post} /level/processerror Create process error record
* @apiName CreateLevelProcessError
* @apiGroup Level Process Error
* @apiUse LevelPublic
*
* @apiDescription Store a validation or parse failure for a memo transaction.
*
* @apiBody {String} txid Failed transaction id (key)
* @apiUse ProcessErrorDataFields
*
* @apiExample Example usage:
* curl -H "Content-Type: application/json" -X POST localhost:5021/level/processerror \
* -d '{"txid":"abc...","errorData":{"error":"invalid reply push data count 2","ts":1500000000000,"blockHeight":600000}}'
*
* @apiSuccess {String} txid Transaction id written
* @apiSuccess {Boolean} success true
*/
/**
* @api {get} /level/processerror/:txid Get process error record
* @apiName GetLevelProcessError
* @apiGroup Level Process Error
* @apiUse LevelPublic
*
* @apiParam {String} txid Failed transaction id
*
* @apiExample Example usage:
* curl -X GET localhost:5021/level/processerror/abc...
*
* @apiSuccess {String} error Error message
* @apiSuccess {Number} ts Unix epoch milliseconds when logged
* @apiSuccess {Number} blockHeight Block height when indexed
*/
/**
* @api {put} /level/processerror/:txid Update process error record
* @apiName UpdateLevelProcessError
* @apiGroup Level Process Error
* @apiUse LevelPublic
*
* @apiParam {String} txid Failed transaction id
* @apiUse ProcessErrorDataFields
*
* @apiExample Example usage:
* curl -H "Content-Type: application/json" -X PUT localhost:5021/level/processerror/abc... \
* -d '{"errorData":{"error":"invalid reply push data count 2","ts":1500000000000,"blockHeight":600000}}'
*
* @apiSuccess {String} txid Transaction id updated
* @apiSuccess {Boolean} success true
*/
/**
* @api {delete} /level/processerror/:txid Delete process error record
* @apiName DeleteLevelProcessError
* @apiGroup Level Process Error
* @apiUse LevelPublic
*
* @apiParam {String} txid Failed transaction id
*
* @apiExample Example usage:
* curl -X DELETE localhost:5021/level/processerror/abc...
*
* @apiSuccess {String} txid Transaction id deleted
* @apiSuccess {Boolean} success true
*/
/**
* @apiDefine PtxDataFields
* @apiBody {Number} ptxData.processedAt Unix epoch milliseconds when processed
* @apiBody {Number} ptxData.blockHeight Block height when indexed
*/
/**
* @api {post} /level/ptx Create processed transaction marker
* @apiName CreateLevelPtx
* @apiGroup Level Processed Tx
* @apiUse LevelPublic
*
* @apiDescription Mark a memo transaction as processed for idempotency.
*
* @apiBody {String} txid Transaction id (key)
* @apiUse PtxDataFields
*
* @apiExample Example usage:
* curl -H "Content-Type: application/json" -X POST localhost:5021/level/ptx \
* -d '{"txid":"abc...","ptxData":{"processedAt":1500000000000,"blockHeight":600000}}'
*
* @apiSuccess {String} txid Transaction id written
* @apiSuccess {Boolean} success true
*/
/**
* @api {get} /level/ptx/:txid Get processed transaction marker
* @apiName GetLevelPtx
* @apiGroup Level Processed Tx
* @apiUse LevelPublic
*
* @apiParam {String} txid Transaction id
*
* @apiExample Example usage:
* curl -X GET localhost:5021/level/ptx/abc...
*
* @apiSuccess {Number} processedAt Unix epoch milliseconds when processed
* @apiSuccess {Number} blockHeight Block height when indexed
*/
/**
* @api {put} /level/ptx/:txid Update processed transaction marker
* @apiName UpdateLevelPtx
* @apiGroup Level Processed Tx
* @apiUse LevelPublic
*
* @apiParam {String} txid Transaction id
* @apiUse PtxDataFields
*
* @apiExample Example usage:
* curl -H "Content-Type: application/json" -X PUT localhost:5021/level/ptx/abc... \
* -d '{"ptxData":{"processedAt":1500000000000,"blockHeight":600000}}'
*
* @apiSuccess {String} txid Transaction id updated
* @apiSuccess {Boolean} success true
*/
/**
* @api {delete} /level/ptx/:txid Delete processed transaction marker
* @apiName DeleteLevelPtx
* @apiGroup Level Processed Tx
* @apiUse LevelPublic
*
* @apiParam {String} txid Transaction id
*
* @apiExample Example usage:
* curl -X DELETE localhost:5021/level/ptx/abc...
*
* @apiSuccess {String} txid Transaction id deleted
* @apiSuccess {Boolean} success true
*/
export {}