mpp-sdk
Version:
SDK to talk to the Memento Payments Platform
111 lines (110 loc) • 3.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const base_js_1 = require("./base.js");
const helpers_js_1 = require("../utils/helpers.js");
class TransactionsEndpoint extends base_js_1.BaseEndpoint {
/**
* Gets available transactions for current user
* @returns a list of available transactions
*/
list(filters) {
return this.doRequest({
url: "/transactions/",
method: "GET",
params: (0, helpers_js_1.filtersToParams)(filters || {}),
});
}
/**
* Gets available transactions for current user with the "missing_data" status
* @returns a list of available transactions
*/
todo(filters) {
return this.doRequest({
url: "/transactions/todo",
method: "GET",
params: (0, helpers_js_1.filtersToParams)(filters || {}),
});
}
/**
* Gets a transaction
* @param data
* @returns transaction
*/
get(id) {
return this.doRequest({
url: `/transactions/${id}`,
method: "GET",
});
}
/**
* Gets available transaction categories for current user
* @returns a list of available transaction categories
*/
categories(filters) {
return this.doRequest({
url: "/transactions/categories",
method: "GET",
params: (0, helpers_js_1.filtersToParams)(filters || {}),
});
}
/**
* Updates a transaction
* @returns the updated transaction object
*/
update(id, data) {
return this.doRequest({
url: `/transactions/${id}`,
method: "PATCH",
data,
});
}
/**
* Gets all receipts fro a transaction
* @returns a list of receipts for a transactions
*/
listReceipts(transaction_id) {
return this.doRequest({
url: "/transactions/${transaction_id}/receipts/",
method: "GET",
});
}
/**
* Uploads a receipt for a transaction
* @returns a transaction receipt
*/
uploadReceipt(transaction_id, input) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const data = new FormData();
data.append("file", input.file);
let headers = {
"Content-Type": "multipart/form-data",
};
// form-data nodejs polyfill needs this since axios
// does not correctly set the multipart form boundary when running
// in nodejs.
if (data.getHeaders) {
headers = data.getHeaders();
}
return this.doRequest({
url: `/transactions/${transaction_id}/receipts/`,
method: "POST",
headers,
data,
});
});
}
/**
* Overrides the team of a transaction.
* @param transaction_id
* @param team_id
* @returns the affected transaction
*/
setTeam(transaction_id, team_id) {
return this.doRequest({
url: `/transactions/${transaction_id}/team/${team_id}`,
method: "PUT",
});
}
}
exports.default = TransactionsEndpoint;