npm.io
1.2.8 • Published 2d ago

firstock

Licence
MIT
Version
1.2.8
Deps
4
Size
235 kB
Vulns
0
Weekly
0

The Firstock Developer API Nodejs client -

To communicate with the Firstock Developer API using Nodejs, you can use the official Nodejs client library provided by Firstock. Licensed under the MIT License.

Version - 1.2.1

Documentation

  • Nodejs client documentation

Installing the client

Use the package manager npm to install thefirstock.

npm install firstock

API usage

const Firstock = require("firstock");

const firstock = new Firstock();

// Login
firstock.login({
  userId: "",
  password: "",
  TOTP: "",
  DOBnPAN: "",
  vendorCode: "",
  apiKey: ""
}, (err, result) => {
  console.log("login Error, ", err);
  console.log("login Result: ", result);
});

// Place an Order
firstock.placeOrder({
  userId: "",
  exchange: "",
  tradingSymbol: "",
  quantity: "",
  price: "",
  product: "",
  transactionType: "",
  priceType: "",
  retention: "",
  triggerPrice: "",
  remarks: "",
}, (err, result) => {
  console.log("placeOrder Error, ", err);
  console.log("placeOrder Result: ", result);
});

// Modify an Order
firstock.modifyOrder({
  userId: "",
  orderNumber: "",
  price: "",
  quantity: "",
  triggerPrice: "",
  tradingSymbol: "",
  exchange: "",
  priceType: "",
  product: "",
  retention: ""
}, (err, result) => {
  console.log("modifyOrder Error, ", err);
  console.log("modifyOrder Result: ", result);
});

// Cancel an Order
firstock.cancelOrder({
  userId: "",
  orderNumber: ""
}, (err, result) => {
  console.log("cancelOrder Error, ", err);
  console.log("cancelOrder Result: ", result);
});

// Single Order History
firstock.singleOrderHistory({
  userId: "",
  orderNumber: ""
}, (err, result) => {
  console.log("singleOrderHistory Error, ", err);
  console.log("singleOrderHistory Result: ", result);
});

// Order Book
firstock.orderBook({ userId: "" }, (err, result) => {
  console.log("orderBook Error, ", err);
  console.log("orderBook Result: ", result);
});

// Trade Book
firstock.tradeBook({ userId: "" }, (err, result) => {
  console.log("tradeBook Error, ", err);
  console.log("tradeBook Result: ", result);
});

// Position Book
firstock.positionBook({ userId: "" }, (err, result) => {
  console.log("positionBook Error, ", err);
  console.log("positionBook Result: ", result);
});

// Holdings
firstock.holdings({ userId: "" }, (err, result) => {
  console.log("holdings Error, ", err);
  console.log("holdings Result: ", result);
});

// Limits
firstock.limit({ userId: "" }, (err, result) => {
  console.log("limit Error, ", err);
  console.log("limit Result: ", result);
});

// Order Margin
firstock.orderMargin({
  userId: "",
  exchange: "",
  tradingSymbol: "",
  quantity: "",
  price: "",
  product: "",
  transactionType: "",
  priceType: ""
}, (err, result) => {
  console.log("orderMargin Error, ", err);
  console.log("orderMargin Result: ", result);
});

// Basket Margin
firstock.basketMargin({
  userId: "",
  exchange: "",
  transactionType: "",
  product: "",
  tradingSymbol: "",
  quantity: "",
  priceType: "",
  price: "",
  BasketList_Params: [ /* array of order objects */ ]
}, (err, result) => {
  console.log("basketMargin Error, ", err);
  console.log("basketMargin Result: ", result);
});

// Product Conversion
firstock.productConversion({
  userId: "",
  exchange: "",
  tradingSymbol: "",
  quantity: "",
  product: "",
  previousProduct: ""
}, (err, result) => {
  console.log("productConversion Error, ", err);
  console.log("productConversion Result: ", result);
});

// Brokerage Calculator
firstock.brokerageCalculator({
  userId: "",
  exchange: "",
  tradingSymbol: "",
  transactionType: "",
  Product: "",
  quantity: "",
  price: "",
  strike_price: "",
  inst_name: "",
  lot_size: ""
}, (err, result) => {
  console.log("brokerageCalculator Error, ", err);
  console.log("brokerageCalculator Result: ", result);
});

// Get Quote
firstock.getQuote({
  userId: "",
  exchange: "",
  tradingSymbol: ""
}, (err, result) => {
  console.log("getQuote Error, ", err);
  console.log("getQuote Result: ", result);
});

// Get LTP
firstock.getQuoteltp({
  userId: "",
  exchange: "",
  tradingSymbol: ""
}, (err, result) => {
  console.log("getQuoteltp Error, ", err);
  console.log("getQuoteltp Result: ", result);
});

// Get Multi Quotes
firstock.getMultiQuotes({
  userId: "",
  data: [
    { exchange: "", tradingSymbol: "" },
    // more symbols
  ]
}, (err, result) => {
  console.log("getMultiQuotes Error, ", err);
  console.log("getMultiQuotes Result: ", result);
});

// Get Multi Quotes LTP
firstock.getMultiQuotesltp({
  userId: "",
  data: [
    { exchange: "", tradingSymbol: "" },
    // more symbols
  ]
}, (err, result) => {
  console.log("getMultiQuotesltp Error, ", err);
  console.log("getMultiQuotesltp Result: ", result);
});

// Get Index List
firstock.indexList({ userId: "", exchange: "" }, (err, result) => {
  console.log("indexList Error, ", err);
  console.log("indexList Result: ", result);
});

// Get Expiry
firstock.getExpiry({
  userId: "",
  exchange: "",
  tradingSymbol: ""
}, (err, result) => {
  console.log("getExpiry Error, ", err);
  console.log("getExpiry Result: ", result);
});

// Option Chain
firstock.optionChain({
  userId: "",
  exchange: "",
  symbol: "",
  expiry: "",
  count: "",
  strikePrice: ""
}, (err, result) => {
  console.log("optionChain Error, ", err);
  console.log("optionChain Result: ", result);
});

// Option Chain Greeks
firstock.optionChainGreeks({
  userId: "",
  exchange: "",
  symbol: "",
  expiry: "",
  count: "",
  strikePrice: ""
}, (err, result) => {
  console.log("optionChainGreeks Error, ", err);
  console.log("optionChainGreeks Result: ", result);
});

// Search Scrips
firstock.searchScrips({ userId: "", stext: "" }, (err, result) => {
  console.log("searchScrips Error, ", err);
  console.log("searchScrips Result: ", result);
});

// Historical Data
firstock.timePriceSeries({
  userId: "",
  exchange: "",
  tradingSymbol: "",
  startTime: "",
  endTime: "",
  interval: ""
}, (err, result) => {
  console.log("timePriceSeries Error, ", err);
  console.log("timePriceSeries Result: ", result);
});

// Place AMO
firstock.placeAMO({
  userId: "",
  exchange: "",
  tradingSymbol: "",
  quantity: "",
  price: "",
  product: "",
  transactionType: "",
  priceType: "",
  retention: "",
  triggerPrice: "",
  remarks: "",
}, (err, result) => {
  console.log("placeAMO Error, ", err);
  console.log("placeAMO Result: ", result);
});

// Modify AMO
firstock.modifyAMO({
  userId: "",
  orderNumber: "",
  quantity: "",
  price: "",
  priceType: "",
  product: "",
  triggerPrice: "",
}, (err, result) => {
  console.log("modifyAMO Error, ", err);
  console.log("modifyAMO Result: ", result);
});

// Place GTT Order
firstock.placeGTTOrder({
  userId: "",
  tradingSymbol: "",
  exchange: "",
  validity: "GTT",
  value: "",
  remarks: "",
  OrderParams: {
    exchange: "",
    tradingSymbol: "",
    transactionType: "",
    product: "",
    priceType: "",
    price: "",
    triggerPrice: "",
    quantity: "",
    retention: "",
    remarks: "",
  },
}, (err, result) => {
  console.log("placeGTTOrder Error, ", err);
  console.log("placeGTTOrder Result: ", result);
});

// Modify GTT Order
firstock.modifyGTTOrder({
  userId: "",
  GTTid: "",
  tradingSymbol: "",
  exchange: "",
  validity: "GTT",
  remarks: "",
  OrderParams: {
    exchange: "",
    tradingSymbol: "",
    transactionType: "",
    product: "",
    priceType: "",
    price: "",
    triggerPrice: "",
    quantity: "",
    retention: "",
    remarks: "",
  },
}, (err, result) => {
  console.log("modifyGTTOrder Error, ", err);
  console.log("modifyGTTOrder Result: ", result);
});

// Get GTT Orders
firstock.getGTTOrders({
  userId: "",
}, (err, result) => {
  console.log("getGTTOrders Error, ", err);
  console.log("getGTTOrders Result: ", result);
});

// Cancel GTT Order
firstock.cancelGTTOrder({
  userId: "",
  GTTid: "",
}, (err, result) => {
  console.log("cancelGTTOrder Error, ", err);
  console.log("cancelGTTOrder Result: ", result);
});

WebSockets

Order Update Feed

const { Firstock, FirstockWebSocket } = require('./websockets');

// Define callback method 
function orderBookData(data) {
    console.log(data);
}

const userId = 'YOUR_USER_ID';

const model = new FirstockWebSocket({
    order_data: orderBookData
});

async function main() {
    const [conn, err] = await Firstock.initializeWebsockets(userId, model);
    console.log("Error:", err);

    await new Promise(resolve => setTimeout(resolve, 25000));

    // Close WebSocket connection
    const closeErr = await Firstock.closeWebsocket(conn);
    console.log("Close Error:", closeErr);
}

main();

Position Update Feed

const { Firstock, FirstockWebSocket } = require('./websockets');

// Define callback method 
function positionBookData(data) {
    console.log(data);
}

const userId = 'YOUR_USER_ID';

const model = new FirstockWebSocket({
    position_data: positionBookData
});

async function main() {
    const [conn, err] = await Firstock.initializeWebsockets(userId, model);
    console.log("Error:", err);

    await new Promise(resolve => setTimeout(resolve, 25000));

    // Close WebSocket connection
    const closeErr = await Firstock.closeWebsocket(conn);
    console.log("Close Error:", closeErr);
}

main();


Subscribe Feed

const { Firstock, FirstockWebSocket } = require('./websockets');

// Define callback method 
function subscribeFeedData(data) {
    console.log(data);
}

const userId = 'YOUR_USER_ID';

const model = new FirstockWebSocket({
    subscribe_feed_data: subscribeFeedData,
    tokens: ["NSE:26000"]
});

async function main() {
    const [conn, err] = await Firstock.initializeWebsockets(userId, model);
    console.log("Error:", err);

    if (conn) {
        const subscribeErr = await Firstock.subscribe(conn, ["BSE:1"]);
        console.log("Subscribe Error:", subscribeErr);
    }

    await new Promise(resolve => setTimeout(resolve, 25000));

    // Unsubscribe
    const unsubErr = await Firstock.unsubscribe(conn, ["NSE:26000", "BSE:1"]);
    console.log("Unsubscribe Error:", unsubErr);

    await new Promise(resolve => setTimeout(resolve, 5000));

    // Close WebSocket connection
    const closeErr = await Firstock.closeWebsocket(conn);
    console.log("Close Error:", closeErr);
}

main();

Subscribe Option Greeks Feed

const { Firstock, FirstockWebSocket } = require('./websockets');

// Define callback method 
function subscribeOptionGreeksData(data) {
    console.log(data);
}

const userId = 'YOUR_USER_ID';

const model = new FirstockWebSocket({
    subscribe_option_greeks_data: subscribeOptionGreeksData,
    option_greeks_tokens: ["NFO:44297"]
});

async function main() {
    const [conn, err] = await Firstock.initializeWebsockets(userId, model);
    console.log("Error:", err);

    if (conn) {
        const subscribeErr = await Firstock.subscribeOptionGreeks(conn, ["NFO:44298"]);
        console.log("Subscribe Error:", subscribeErr);
    }

    await new Promise(resolve => setTimeout(resolve, 25000));

    // Unsubscribe
    const unsubErr = await Firstock.unsubscribeOptionGreeks(conn, ["NFO:44297", "NFO:44298"]);
    console.log("Unsubscribe Error:", unsubErr);

    await new Promise(resolve => setTimeout(resolve, 5000));

    // Close WebSocket connection
    const closeErr = await Firstock.closeWebsocket(conn);
    console.log("Close Error:", closeErr);
}

main();

Refer to the Firstock Connect Documentation for the complete list of supported methods.

Changelog

Check release notes.

Keywords