{"_id":"@09jayy/stockapicaller","_rev":"2-43c15accc61a28cf0b361e8b664eabd2","name":"@09jayy/stockapicaller","dist-tags":{"latest":"2.1.0"},"versions":{"2.1.0":{"name":"@09jayy/stockapicaller","version":"2.1.0","keywords":[],"author":"","license":"ISC","_id":"@09jayy/stockapicaller@2.1.0","maintainers":[{"name":"09jayy","email":"jibril.hairulzihan@outlook.com"}],"dist":{"shasum":"5af4766eb640737fc73003b4eb35fa663e7f65b7","tarball":"https://registry.npmjs.org/@09jayy/stockapicaller/-/stockapicaller-2.1.0.tgz","fileCount":12,"integrity":"sha512-76qwfbhn06aVxSAbZRJmR5mvbb9WBUlQa5c5M9F9MYT7mj+JIc9jZMeDhKeVqVmmh8556LdUCvkOHihGTOkwUQ==","signatures":[{"sig":"MEUCIBR9M18qX90kJVvUl3q89sF09g7sWV+T4Tt2dNaquVxfAiEAiey6dVK5CuXiZ5g4XH24pjt/F7sy5rSt/yp+tCOMG+E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":105825},"main":"StockApiCaller.js","type":"commonjs","gitHead":"9d90890d064690c4fea053b4acac44fe3dfdf118","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"09jayy","email":"jibril.hairulzihan@outlook.com"},"_npmVersion":"11.2.0","description":"Provides interface to make api calls easily switching between different api services","directories":{},"_nodeVersion":"23.11.0","dependencies":{"yahoo-finance2":"^2.13.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/stockapicaller_2.1.0_1744216646825_0.7425492546689303","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."}},"time":{"created":"2025-04-09T16:37:26.749Z","modified":"2025-04-10T11:44:02.275Z","2.1.0":"2025-04-09T16:37:27.175Z"},"license":"ISC","keywords":[],"description":"Provides interface to make api calls easily switching between different api services","maintainers":[{"name":"09jayy","email":"jibril.hairulzihan@outlook.com"}],"readme":"# Stock Api Caller\r\n\r\nProvides interface to make api calls easily switching between different api services\r\n\r\n# Methods\r\n\r\n## `.setApiService(service: 'alpaca' | 'yahoofinance')`\r\n\r\n## `.setApiKey(apiKey: string)`\r\n\r\n## `.setSecretKey(secretKey: string)`\r\n\r\n## `.fetchLatestTradeOf(symbol: string)`\r\n\r\nIf apiService is set to `'alpaca'`, returns\r\n```javascript\r\nPromise<{\r\n    symbol: string, \r\n        trade: { \r\n        t: string,   // trade time stamp\r\n        x: number,   // exchange price\r\n        p: number,   // trade price\r\n        s: number,   // trade size\r\n        c: string[], // trade conditions\r\n        i: number,   // tradeId\r\n        z: number    // tape\r\n        }\r\n    }\r\n>\r\n```\r\nsee Alpaca api docs for more. \r\n\r\n## `.fetchLatestQuoteOf(symbol: string)`\r\n\r\n## `.fetchPreviousBarData(symbols: Array<string>)`\r\n\r\nIf apiService is set to `'alpaca'`, returns\r\n```javascript\r\n{Promise<{\r\n    [symbol: string]: Array<{\r\n        c: number, // Close price\r\n        h: number, // High price\r\n        l: number, // Low price\r\n        n: number, // Number of trades\r\n        o: number, // Open price\r\n        t: string, // Timestamp of the bar (ISO 8601 format)\r\n        v: number, // Volume of the stock\r\n        vw: number  // Volume-weighted average price\r\n    }>\r\n}>}\r\n```\r\n\r\nExample output:\r\n```javascript\r\n// Stock Api Caller setup\r\nimport StockApiCaller from 'stockapicaller'; \r\nconst stockApiCaller = new StockApiCaller()\r\n    .setApiService('alpaca')\r\n    .setApiKey('api key')\r\n    .setSecretKey('secret key'); \r\n\r\n// Get Previous Bar Data\r\nconst barData = await stockApiCaller.fetchPreviousBarData(['TSLA','AAPL'])\r\n\r\n// barData: \r\n{\r\n  AAPL: [\r\n    {\r\n      c: 179.72,\r\n      h: 194.15,\r\n      l: 174.62,\r\n      n: 1854434,\r\n      o: 177.2,\r\n      t: '2025-04-07T04:00:00Z',\r\n      v: 122998968,\r\n      vw: 180.385536\r\n    }\r\n  ],\r\n  TSLA: [\r\n    {\r\n      c: 230.71,\r\n      h: 252,\r\n      l: 214.25,\r\n      n: 2508078,\r\n      o: 223.78,\r\n      t: '2025-04-07T04:00:00Z',\r\n      v: 151686555,\r\n      vw: 229.949454\r\n    }\r\n  ]\r\n}\r\n```\r\n\r\n## `.fetchBarDataTimeFrame(symbol: string, timeframe: '1Min' | '15Min' | '1Hour' | '1Day', {start: <RFC-3339-date-string>, end: <RFC-3339-date-string>, limit: number})`\r\n\r\nstart and end allow: filtering data equal to or before this time in RFC-3339 format. Fractions of a second are not accepted.\r\n\r\nreturns\r\n```javascript\r\n{\r\n  bars: [\r\n    {\r\n      c: number,    // close price\r\n      h: number,    // highest price\r\n      l: number,    // lowest price\r\n      n: number,    // number of trades\r\n      o: number,    // open price\r\n      t: datetime,  // time stamp in  RFC-3339 format with nanosecond precision\r\n      v: number,    // volumne\r\n      vw: number    // volume weighted average price\r\n    }\r\n  ]\r\n}\r\n```","readmeFilename":"README.md"}