27 #pragma clang diagnostic ignored "-Wundefined-inline"
31 #include "../kite.hpp"
32 #include "../utils.hpp"
34 namespace kiteconnect {
37 utils::http::Params bodyParams = {
38 {
"tradingsymbol", params.symbol },
39 {
"transaction_type", params.transactionType },
42 utils::addParam(bodyParams, params.quantity,
"quantity");
43 utils::addParam(bodyParams, params.amount,
"amount");
44 utils::addParam(bodyParams, params.tag,
"tag");
46 return callApi<string, utils::json::JsonObject, true>(
47 "mf.order.place", bodyParams, {}, [](utils::json::JsonObject& data) {
48 return utils::json::get<string>(data,
"order_id");
53 return callApi<string, utils::json::JsonObject, true>(
54 "mf.order.cancel", {}, { orderId }, [](utils::json::JsonObject& data) {
55 return utils::json::get<string>(data,
"order_id");
60 return callApi<std::vector<mfOrder>, utils::json::JsonArray,
true>(
61 "mf.orders", {}, {}, [](utils::json::JsonArray& data) {
62 std::vector<mfOrder> Orders;
63 for (
auto& i : data) { Orders.emplace_back(i.GetObject()); }
69 return callApi<mfOrder, utils::json::JsonObject>(
70 "mf.order.info", {}, { orderId });
74 return callApi<std::vector<mfHolding>, utils::json::JsonArray,
true>(
75 "mf.holdings", {}, {}, [](utils::json::JsonArray& data) {
77 for (
auto& i : data) {
holdings.emplace_back(i.GetObject()); }
84 utils::http::Params bodyParams = {
85 {
"tradingsymbol", params.symbol },
86 {
"amount", std::to_string(params.amount) },
87 {
"instalments", std::to_string(params.installments) },
88 {
"frequency", params.frequency },
91 utils::addParam(bodyParams, params.initialAmount,
"initial_amount");
92 utils::addParam(bodyParams, params.installmentDay,
"instalment_day");
93 utils::addParam(bodyParams, params.tag,
"tag");
95 return callApi<placeMfSipResponse, utils::json::JsonObject>(
96 "mf.sip.place", bodyParams);
100 utils::http::Params bodyParams = {};
102 utils::addParam(bodyParams, params.amount,
"amount");
103 utils::addParam(bodyParams, params.status,
"status");
104 utils::addParam(bodyParams, params.installments,
"instalments");
105 utils::addParam(bodyParams, params.frequency,
"frequency");
106 utils::addParam(bodyParams, params.installmentDay,
"instalment_day");
108 return callApi<string, utils::json::JsonObject, true>(
"mf.sip.modify",
109 bodyParams, { params.sipId }, [](utils::json::JsonObject& data) {
110 return utils::json::get<string>(data,
"order_id");
115 return callApi<string, utils::json::JsonObject, true>(
116 "mf.sip.cancel", {}, { sipId }, [](utils::json::JsonObject& data) {
117 return utils::json::get<string>(data,
"sip_id");
122 return callApi<std::vector<mfSip>, utils::json::JsonArray,
true>(
123 "mf.sips", {}, {}, [](utils::json::JsonArray& data) {
124 std::vector<mfSip> sips;
125 for (
auto& i : data) { sips.emplace_back(i.GetObject()); }
131 return callApi<mfSip, utils::json::JsonObject>(
132 "mf.sip.info", {}, { sipId });
136 const auto response =
sendReq(endpoints.at(
"mf.instruments"), {}, {});
137 if (!response) {
return {}; };
139 return utils::parseInstruments<mfInstrument>(response.rawBody);