8000 Universal snapshot (#162) · polygon-io/client-js@8ed0fb9 · GitHub
[go: up one dir, main page]

Skip to content

Commit 8ed0fb9

Browse files
Universal snapshot (#162)
* Added Universal Snapshot support * Clean up demo with correct docs * Fix linting on example * Move universal snapshot to price data clients --------- Co-authored-by: justinpolygon <123573436+justinpolygon@users.noreply.github.com>
1 parent 23cdeda commit 8ed0fb9

File tree

11 files changed

+191
-5
lines changed

11 files changed

+191
-5
lines changed

examples/rest/universal-snapshot.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
const { restClient } = require('@polygon.io/client-js');
2+
const rest = restClient("API KEY", "https://api.polygon.io");
3+
4+
// You can access the universal snapshot endpoint from any asset class client
5+
6+
// https://polygon.io/docs/stocks/get_v3_snapshot
7+
rest.stocks.universalSnapshot({ "ticker.any_of": "NCLH,O:SPY250321C00380000,C:EURUSD,X:BTCUSD,I:SPX" }).then((data) => {
8+
console.log(data);
9+
}).catch(e => {
10+
console.error('An error happened:', e);
11+
});
12+
13+
// https://polygon.io/docs/crypto/get_v3_snapshot
14+
rest.crypto.universalSnapshot({ "ticker.any_of": "NCLH,O:SPY250321C00380000,C:EURUSD,X:BTCUSD,I:SPX" }).then((data) => {
15+
console.log(data);
16+
}).catch(e => {
17+
console.error('An error happened:', e);
18+
});
19+
20+
// https://polygon.io/docs/options/get_v3_snapshot
21+
rest.options.universalSnapshot({ "ticker.any_of": "NCLH,O:SPY250321C00380000,C:EURUSD,X:BTCUSD,I:SPX" }).then((data) => {
22+
console.log(data);
23+
}).catch(e => {
24+
console.error('An error happened:', e);
25+
});
26+
27+
// https://polygon.io/docs/forex/get_v3_snapshot
28+
rest.forex.universalSnapshot({ "ticker.any_of": "NCLH,O:SPY250321C00380000,C:EURUSD,X:BTCUSD,I:SPX" }).then((data) => {
29+
console.log(data);
30+
}).catch(e => {
31+
console.error('An error happened:', e);
32+
});

src/rest/crypto/index.test.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,16 @@ describe("[REST] Crypto", () => {
151151
fetchStub.getCalls()[0].args[1].headers.header1.should.eql(mocks.globalOptions.headers.header1);
152152
});
153153

154+
it("snapshot - universal snapshot /v3/snapshot", async () => {
155+
const query = {'ticker.any_of': 'NCLH,O:SPY250321C00380000,C:EURUSD,X:BTCUSD,I:SPX'}
156+
await crypto.universalSnapshot(query, mocks.overrideOptions);
157+
fetchStub.callCount.should.eql(1);
158+
getPath(fetchStub.getCalls()[0].args[0]).should.eql("/v3/snapshot");
159+
fetchStub.getCalls()[0].args[0].indexOf('ticker.any_of').should.be.gt(-1);
160+
fetchStub.getCalls()[0].args[1].referrer.should.eql(mocks.overrideOptions.referrer);
161+
fetchStub.getCalls()[0].args[1].headers.header1.should.eql(mocks.globalOptions.headers.header1);
162+
});
163+
154164
it("sma call /v1/indicators/sma/{cryptoTicker}", async () => {
155165
await crypto.sma("X:BTC-USD", mocks.query, mocks.overrideOptions);
156166
fetchStub.callCount.should.eql(1);

src/rest/crypto/index.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import { ISma, sma } from "./sma.js";
3737
import { IEma, ema } from "./ema.js";
3838
import { IMacd, macd } from "./macd.js";
3939
import { IRsi, rsi } from "./rsi.js";
40+
import { IUniversalSnapshot, IUniversalSnapshotQuery, universalSnapshot } from "../universal/universalSnapshot.js";
4041

4142
export {
4243
ICryptoDailyOpenCloseQuery,
@@ -55,6 +56,7 @@ export { ISma, ITechnicalIndicatorsQuery } from '../stocks/sma';
5556
export { IEma } from '../stocks/ema';
5657
export { IMacd } from '../stocks/macd';
5758
export { IRsi } from '../stocks/rsi';
59+
export { IUniversalSnapshot, IUniversalSnapshotQuery } from "../universal/universalSnapshot.js";
5860

5961
export interface ICryptoClient {
6062
aggregates: (
@@ -107,6 +109,7 @@ export interface ICryptoClient {
107109
ema: (symbol: string, query?: ITechnicalIndicatorsQuery, options?: IRequestOptions) => Promise<IEma>;
108110
macd: (symbol: string, query?: ITechnicalIndicatorsQuery, options?: IRequestOptions) => Promise<IMacd>;
109111
rsi: (symbol: string, query?: ITechnicalIndicatorsQuery, options?: IRequestOptions) => Promise<IRsi>;
112+
universalSnapshot: (query?: IUniversalSnapshotQuery, options?: IRequestOptions) => Promise<IUniversalSnapshot>;
110113
}
111114

112115
export const cryptoClient = (
@@ -131,7 +134,8 @@ export const cryptoClient = (
131134
sma: (...args) => sma(get, ...args),
132135
ema: (...args) => ema(get, ...args),
133136
macd: (...args) => macd(get, ...args),
134-
rsi: (...args) => rsi(get, ...args)
137+
rsi: (...args) => rsi(get, ...args),
138+
universalSnapshot: (...args) => universalSnapshot(get, ...args)
135139
});
136140
}
137141
export default cryptoClient;

src/rest/forex/index.test.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,16 @@ describe("[REST] Forex / Currencies", () => {
139139
fetchStub.getCalls()[0].args[1].headers.header1.should.eql(mocks.globalOptions.headers.header1);
140140
});
141141

142+
it("snapshot - universal snapshot /v3/snapshot", async () => {
143+
const query = {'ticker.any_of': 'NCLH,O:SPY250321C00380000,C:EURUSD,X:BTCUSD,I:SPX'}
144+
await fx.universalSnapshot(query, mocks.overrideOptions);
145+
fetchStub.callCount.should.eql(1);
146+
getPath(fetchStub.getCalls()[0].args[0]).should.eql("/v3/snapshot");
147+
fetchStub.getCalls()[0].args[0].indexOf('ticker.any_of').should.be.gt(-1);
148+
fetchStub.getCalls()[0].args[1].referrer.should.eql(mocks.overrideOptions.referrer);
149+
fetchStub.getCalls()[0].args[1].headers.header1.should.eql(mocks.globalOptions.headers.header1);
150+
});
151+
142152
it("sma call /v1/indicators/sma/{fxTicker}", async () => {
143153
await fx.sma("C:EUR-USD", mocks.query, mocks.overrideOptions);
144154
fetchStub.callCount.should.eql(1);

src/rest/forex/index.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import { ISma, sma } from "./sma.js";
3131
import { IEma, ema } from "./ema.js";
3232
import { IMacd, macd } from "./macd.js";
3333
import { IRsi, rsi } from "./rsi.js";
34+
import { IUniversalSnapshot, IUniversalSnapshotQuery, universalSnapshot } from "../universal/universalSnapshot.js";
3435

3536
export { IConversionQuery, IConversion } from "./conversion.js";
3637
export { IForexQuotes } from "./quotes.js";
@@ -49,6 +50,7 @@ export { ISma, ITechnicalIndicatorsQuery } from '../stocks/sma.js';
4950
export { IEma } from '../stocks/ema.js';
5051
export { IMacd } from '../stocks/macd.js';
5152
export { IRsi } from '../stocks/rsi.js';
53+
export { IUniversalSnapshot, IUniversalSnapshotQuery } from "../universal/universalSnapshot.js";
5254

5355
export interface IForexClient {
5456
aggregates: (
@@ -97,6 +99,7 @@ export interface IForexClient {
9799
ema: (symbol: string, query?: ITechnicalIndicatorsQuery, options?: IRequestOptions) => Promise<IEma>;
98100
macd: (symbol: string, query?: ITechnicalIndicatorsQuery, options?: IRequestOptions) => Promise<IMacd>;
99101
rsi: (symbol: string, query?: ITechnicalIndicatorsQuery, options?: IRequestOptions) => Promise<IRsi>;
102+
universalSnapshot: (query?: IUniversalSnapshotQuery, options?: IRequestOptions) => Promise<IUniversalSnapshot>;
100103
}
101104

102105
export const forexClient = (
@@ -120,7 +123,8 @@ export const forexClient = (
120123
sma: (...args) => sma(get, ...args),
121124
ema: (...args) => ema(get, ...args),
122125
macd: (...args) => macd(get, ...args),
123-
rsi: (...args) => rsi(get, ...args)
126+
rsi: (...args) => rsi(get, ...args),
127+
universalSnapshot: (...args) => universalSnapshot(get, ...args)
124128
})
125129
};
126130

src/rest/options/index.test.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,16 @@ describe("[REST] Options", () => {
113113
fetchStub.getCalls()[0].args[1].headers.header1.should.eql(mocks.globalOptions.headers.header1);
114114
});
115115

116+
it("snapshot - universal snapshot /v3/snapshot", async () => {
117+
const query = {'ticker.any_of': 'NCLH,O:SPY250321C00380000,C:EURUSD,X:BTCUSD,I:SPX'}
118+
await options.universalSnapshot(query, mocks.overrideOptions);
119+
fetchStub.callCount.should.eql(1);
120+
getPath(fetchStub.getCalls()[0].args[0]).should.eql("/v3/snapshot");
121+
fetchStub.getCalls()[0].args[0].indexOf('ticker.any_of').should.be.gt(-1);
122+
fetchStub.getCalls()[0].args[1].referrer.should.eql(mocks.overrideOptions.referrer);
123+
fetchStub.getCalls()[0].args[1].headers.header1.should.eql(mocks.globalOptions.headers.header1);
124+
});
125+
116126
it("sma call /v1/indicators/sma/{optionTicker}", async () => {
117127
await options.sma("O:AAPL230616C00150000", mocks.query, mocks.overrideOptions);
118128
fetchStub.callCount.should.eql(1);

src/rest/options/index.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import { ISma, sma } from "./sma.js";
2929
import { IEma, ema } from "./ema.js";
3030
import { IMacd, macd } from "./macd.js";
3131
import { IRsi, rsi } from "./rsi.js";
32+
import { IUniversalSnapshot, IUniversalSnapshotQuery, universalSnapshot } from "../universal/universalSnapshot.js";
3233

3334
export {
3435
IOptionsDailyOpenCloseQuery,
@@ -49,6 +50,7 @@ export { ISma, ITechnicalIndicatorsQuery } from '../stocks/sma.js';
4950
export { IEma } from '../stocks/ema.js';
5051
export { IMacd } from '../stocks/macd.js';
5152
export { IRsi } from '../stocks/rsi.js';
53+
export { IUniversalSnapshot, IUniversalSnapshotQuery } from "../universal/universalSnapshot.js";
5254

5355
export interface IOptionsClient {
5456
aggregates: (
@@ -98,6 +100,7 @@ export interface IOptionsClient {
98100
ema: (symbol: string, query?: ITechnicalIndicatorsQuery, options?: IRequestOptions) => Promise<IEma>;
99101
macd: (symbol: string, query?: ITechnicalIndicatorsQuery, options?: IRequestOptions) => Promise<IMacd>;
100102
rsi: (symbol: string, query?: ITechnicalIndicatorsQuery, options?: IRequestOptions) => Promise<IRsi>;
103+
universalSnapshot: (query?: IUniversalSnapshotQuery, options?: IRequestOptions) => Promise<IUniversalSnapshot>;
101104
}
102105

103106
export const optionsClient = (
@@ -120,7 +123,8 @@ export const optionsClient = (
120123
sma: (...args) => sma(get, ...args),
121124
ema: (...args) => ema(get, ...args),
122125
macd: (...args) => macd(get, ...args),
123-
rsi: (...args) => rsi(get, ...args)
126+
rsi: (...args) => rsi(get, ...args),
127+
universalSnapshot: (...args) => universalSnapshot(get, ...args)
124128
})
125129
};
126130

src/rest/reference/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ const get = getWithGlobals(apiKey, apiBase, options);
7777
tickerDetails: (...args) => tickerDetails(get, ...args),
7878
tickerNews: (...args) => tickerNews(get, ...args),
7979
tickers: (...args) => tickers(get, ...args),
80-
tickerTypes: (...args) => tickerTypes(get, ...args),
80+
tickerTypes: (...args) => tickerTypes(get, ...args)
8181
});
8282
}
8383
export default referenceClient;

src/rest/stocks/index.test.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,16 @@ describe("[REST] Stocks", () => {
143143
fetchStub.getCalls()[0].args[1].headers.header1.should.eql(mocks.globalOptions.headers.header1);
144144
});
145145

146+
it("snapshot - universal snapshot /v3/snapshot", async () => {
147+
const query = {'ticker.any_of': 'NCLH,O:SPY250321C00380000,C:EURUSD,X:BTCUSD,I:SPX'}
148+
await stocks.universalSnapshot(query, mocks.overrideOptions);
149+
fetchStub.callCount.should.eql(1);
150+
getPath(fetchStub.getCalls()[0].args[0]).should.eql("/v3/snapshot");
151+
fetchStub.getCalls()[0].args[0].indexOf('ticker.any_of').should.be.gt(-1);
152+
fetchStub.getCalls()[0].args[1].referrer.should.eql(mocks.overrideOptions.referrer);
153+
fetchStub.getCalls()[0].args[1].headers.header1.should.eql(mocks.globalOptions.headers.header1);
154+
});
155+
146156
it("sma call /v1/indicators/sma/{stockTicker}", async () => {
147157
await stocks.sma("AAPL", mocks.query, mocks.overrideOptions);
148158
fetchStub.callCount.should.eql(1);

src/rest/stocks/index.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import { ISma, ITechnicalIndicatorsQuery, sma } from "./sma.js";
3333
import { IEma, ema } from "./ema.js";
3434
import { IMacd, macd } from "./macd.js";
3535
import { IRsi, rsi } from "./rsi.js";
36+
import { IUniversalSnapshot, IUniversalSnapshotQuery, universalSnapshot } from "../universal/universalSnapshot.js";
3637

3738
export { IAggsQuery, IAggs } from "./aggregates.js";
3839
export {
@@ -55,6 +56,7 @@ export { ISma, ITechnicalIndicatorsQuery } from './sma.js';
5556
export { IEma } from './ema.js';
5657
export { IMacd } from './macd.js';
5758
export { IRsi } from './rsi.js';
59+
export { IUniversalSnapshot, IUniversalSnapshotQuery } from "../universal/universalSnapshot.js";
5860

5961
export interface IStocksClient {
6062
aggregates: (
@@ -101,6 +103,7 @@ export interface IStocksClient {
101103
macd: (symbol: string, query?: ITechnicalIndicatorsQuery, options?: IRequestOptions) => Promise<IMacd>;
102104
rsi: (symbol: string, query?: ITechnicalIndicatorsQuery, options?: IRequestOptions) => Promise<IRsi>;
103105
trades: (stockTicker: string, query?: ITradesQuotesQuery, options?: IRequestOptions) => Promise<ITrades>;
106+
universalSnapshot: (query?: IUniversalSnapshotQuery, options?: IRequestOptions) => Promise<IUniversalSnapshot>;
104107
}
105108

106109
export const stocksClient = (
@@ -126,7 +129,8 @@ export const stocksClient = (
126129
ema: (...args) => ema(get, ...args),
127130
macd: (...args) => macd(get, ...args),
128131
rsi: (...args) => rsi(get, ...args),
129-
trades: (...args) => trades(get, ...args)
132+
trades: (...args) => trades(get, ...args),
133+
universalSnapshot: (...args) => universalSnapshot(get, ...args)
130134
})
131135
}
132136

0 commit comments

Comments
 (0)
0