espend-rest
Version:
A RESTful API for submitting payments and monitoring accounts on the eSpend network.
105 lines (85 loc) • 4.16 kB
JavaScript
const ripple = require('espend-lib');
const express = require('express');
const api = require('../api');
const errors = require('../api').errors;
const respond = require('./response-handler.js');
const version = require('./version.js');
var router = new express.Router();
router.generateIndexPage = function(req, res) {
var url_base = '/v' + version.getApiVersion();
res.json({
success: true,
name: 'espend-rest',
package_version: version.getPackageVersion(),
version: version.getApiVersion(),
documentation: 'https://github.com/ripple/espend-rest',
endpoints: {
wallet_new: url_base + '/wallet/new',
payment_paths: url_base + '/accounts/{address}/payments/paths/{destination_account}/{destination_amount as value+currency or value+currency+issuer}',
payment_submit: url_base + '/accounts/{address}/payments',
account_payments: url_base + '/accounts/{address}/payments/{hash,client_resource_id}{?direction,exclude_failed}',
account_notifications: url_base + '/accounts/{address}/notifications/{hash,client_resource_id}',
account_balances: url_base + '/accounts/{address}/balances',
account_settings: url_base + '/accounts/{address}/settings',
account_trustlines: url_base + '/accounts/{address}/trustlines',
account_orders_place: url_base + '/accounts/{address}/orders',
account_orders_cancel: url_base + '/accounts/{address}/orders/{sequence}',
account_orders: url_base + '/accounts/{address}/orders/',
account_order_transaction: url_base + '/accounts/{address}/orders/{hash}',
account_order_book: url_base + '/accounts/{address}/order_book/{base as currency+issuer}/{counter as currency+issuer}',
ripple_transactions: url_base + '/transactions/{hash}',
server_status: url_base + '/server',
server_connected: url_base + '/server/connected',
transaction_fee: url_base + '/transaction-fee',
uuid_generator: url_base + '/uuid'
}
});
};
router.get('/', router.generateIndexPage);
/* uuid util */
router.get('/uuid', api.info.uuid);
/**
* For all the routes below, we need a connected rippled
* insert the validateRemoteConnected middleware here
*/
/* make sure the api is connected to a rippled */
router.all('*', function(req, res, next) {
if (api.isConnected()) {
next();
} else {
next(new errors.RippledNetworkError(void(0)));
}
});
/* Connected - if we hit this route, it means the server is connected */
router.get('/server/connected', api.info.isConnected);
/* Transaction fee */
router.get('/transaction-fee', api.info.fee);
/* Server */
router.get('/server', api.info.serverStatus);
/* Wallet */
router.get('/wallet/new', api.wallet.generate);
/* Payments */
router.post('/accounts/:account/payments', api.payments.submit);
router.get('/accounts/:account/payments', api.payments.getAccountPayments);
router.get('/accounts/:account/payments/:identifier', api.payments.get);
router.get('/accounts/:account/payments/paths/:destination_account/:destination_amount_string', api.payments.getPathFind);
/* Orders */
router.get('/accounts/:account/orders', api.orders.getOrders);
router.post('/accounts/:account/orders', api.orders.placeOrder);
router.delete('/accounts/:account/orders/:sequence', api.orders.cancelOrder);
router.get('/accounts/:account/order_book/:base/:counter', api.orders.getOrderBook);
router.get('/accounts/:account/orders/:identifier', api.orders.getOrder);
/* Notifications */
router.get('/accounts/:account/notifications', api.notifications.getNotification);
router.get('/accounts/:account/notifications/:identifier', api.notifications.getNotification);
/* Balances */
router.get('/accounts/:account/balances', api.balances.get);
/* Settings */
router.get('/accounts/:account/settings', api.settings.get);
router.post('/accounts/:account/settings', api.settings.change);
/* Standard Ripple Transactions */
router.get('/transactions/:identifier', api.transactions.get);
/* Trustlines */
router.get('/accounts/:account/trustlines', api.trustlines.get);
router.post('/accounts/:account/trustlines', api.trustlines.add);
module.exports = router;