@clear-street/clearstreet 0.105.0 → 0.107.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/package.json +1 -1
  3. package/resources/v1/calendar.d.mts +10 -3
  4. package/resources/v1/calendar.d.mts.map +1 -1
  5. package/resources/v1/calendar.d.ts +10 -3
  6. package/resources/v1/calendar.d.ts.map +1 -1
  7. package/resources/v1/index.d.mts +3 -3
  8. package/resources/v1/index.d.mts.map +1 -1
  9. package/resources/v1/index.d.ts +3 -3
  10. package/resources/v1/index.d.ts.map +1 -1
  11. package/resources/v1/index.js.map +1 -1
  12. package/resources/v1/index.mjs.map +1 -1
  13. package/resources/v1/instrument-data/index.d.mts +1 -1
  14. package/resources/v1/instrument-data/index.d.mts.map +1 -1
  15. package/resources/v1/instrument-data/index.d.ts +1 -1
  16. package/resources/v1/instrument-data/index.d.ts.map +1 -1
  17. package/resources/v1/instrument-data/index.js.map +1 -1
  18. package/resources/v1/instrument-data/index.mjs.map +1 -1
  19. package/resources/v1/instrument-data/instrument-data.d.mts +127 -1
  20. package/resources/v1/instrument-data/instrument-data.d.mts.map +1 -1
  21. package/resources/v1/instrument-data/instrument-data.d.ts +127 -1
  22. package/resources/v1/instrument-data/instrument-data.d.ts.map +1 -1
  23. package/resources/v1/instrument-data/instrument-data.js +28 -0
  24. package/resources/v1/instrument-data/instrument-data.js.map +1 -1
  25. package/resources/v1/instrument-data/instrument-data.mjs +28 -0
  26. package/resources/v1/instrument-data/instrument-data.mjs.map +1 -1
  27. package/resources/v1/instrument-data/market-data.d.mts +4 -2
  28. package/resources/v1/instrument-data/market-data.d.mts.map +1 -1
  29. package/resources/v1/instrument-data/market-data.d.ts +4 -2
  30. package/resources/v1/instrument-data/market-data.d.ts.map +1 -1
  31. package/resources/v1/instrument-data/market-data.js +4 -2
  32. package/resources/v1/instrument-data/market-data.js.map +1 -1
  33. package/resources/v1/instrument-data/market-data.mjs +4 -2
  34. package/resources/v1/instrument-data/market-data.mjs.map +1 -1
  35. package/resources/v1/instruments.d.mts +46 -1
  36. package/resources/v1/instruments.d.mts.map +1 -1
  37. package/resources/v1/instruments.d.ts +46 -1
  38. package/resources/v1/instruments.d.ts.map +1 -1
  39. package/resources/v1/locates.d.mts +0 -8
  40. package/resources/v1/locates.d.mts.map +1 -1
  41. package/resources/v1/locates.d.ts +0 -8
  42. package/resources/v1/locates.d.ts.map +1 -1
  43. package/resources/v1/locates.js +0 -8
  44. package/resources/v1/locates.js.map +1 -1
  45. package/resources/v1/locates.mjs +0 -8
  46. package/resources/v1/locates.mjs.map +1 -1
  47. package/resources/v1/orders.d.mts +246 -1
  48. package/resources/v1/orders.d.mts.map +1 -1
  49. package/resources/v1/orders.d.ts +246 -1
  50. package/resources/v1/orders.d.ts.map +1 -1
  51. package/resources/v1/orders.js +40 -0
  52. package/resources/v1/orders.js.map +1 -1
  53. package/resources/v1/orders.mjs +40 -0
  54. package/resources/v1/orders.mjs.map +1 -1
  55. package/resources/v1/v1.d.mts +6 -6
  56. package/resources/v1/v1.d.mts.map +1 -1
  57. package/resources/v1/v1.d.ts +6 -6
  58. package/resources/v1/v1.d.ts.map +1 -1
  59. package/resources/v1/v1.js.map +1 -1
  60. package/resources/v1/v1.mjs.map +1 -1
  61. package/src/resources/v1/calendar.ts +11 -3
  62. package/src/resources/v1/index.ts +18 -0
  63. package/src/resources/v1/instrument-data/index.ts +5 -0
  64. package/src/resources/v1/instrument-data/instrument-data.ts +160 -0
  65. package/src/resources/v1/instrument-data/market-data.ts +4 -2
  66. package/src/resources/v1/instruments.ts +54 -0
  67. package/src/resources/v1/locates.ts +0 -8
  68. package/src/resources/v1/orders.ts +298 -0
  69. package/src/resources/v1/v1.ts +36 -0
  70. package/src/version.ts +1 -1
  71. package/version.d.mts +1 -1
  72. package/version.d.ts +1 -1
  73. package/version.js +1 -1
  74. package/version.mjs +1 -1
@@ -59,6 +59,7 @@ export {
59
59
  type AnalystDistribution,
60
60
  type AnalystRating,
61
61
  type FiscalPeriodType,
62
+ type FiscalQuarter,
62
63
  type InstrumentAllEventsData,
63
64
  type InstrumentAnalystConsensus,
64
65
  type InstrumentBalanceSheetStatement,
@@ -67,6 +68,8 @@ export {
67
68
  type InstrumentCashFlowStatementList,
68
69
  type InstrumentDividendEvent,
69
70
  type InstrumentEarnings,
71
+ type InstrumentEarningsTranscript,
72
+ type InstrumentEarningsTranscriptList,
70
73
  type InstrumentEventEnvelope,
71
74
  type InstrumentEventIpoItem,
72
75
  type InstrumentEventsByDate,
@@ -82,6 +85,7 @@ export {
82
85
  type InstrumentDataGetInstrumentAnalystConsensusResponse,
83
86
  type InstrumentDataGetInstrumentBalanceSheetStatementsResponse,
84
87
  type InstrumentDataGetInstrumentCashFlowStatementsResponse,
88
+ type InstrumentDataGetInstrumentEarningsTranscriptsResponse,
85
89
  type InstrumentDataGetInstrumentEventsResponse,
86
90
  type InstrumentDataGetInstrumentFundamentalsResponse,
87
91
  type InstrumentDataGetInstrumentIncomeStatementsResponse,
@@ -89,6 +93,7 @@ export {
89
93
  type InstrumentDataGetInstrumentAnalystConsensusParams,
90
94
  type InstrumentDataGetInstrumentBalanceSheetStatementsParams,
91
95
  type InstrumentDataGetInstrumentCashFlowStatementsParams,
96
+ type InstrumentDataGetInstrumentEarningsTranscriptsParams,
92
97
  type InstrumentDataGetInstrumentEventsParams,
93
98
  type InstrumentDataGetInstrumentIncomeStatementsParams,
94
99
  } from './instrument-data/index';
@@ -100,9 +105,11 @@ export {
100
105
  type InstrumentCore,
101
106
  type InstrumentCoreList,
102
107
  type ListingType,
108
+ type NotShortableReason,
103
109
  type OptionExpiryDate,
104
110
  type OptionsContract,
105
111
  type OptionsContractList,
112
+ type ShortableAttribute,
106
113
  type TickRule,
107
114
  type InstrumentGetInstrumentByIDResponse,
108
115
  type InstrumentGetInstrumentsResponse,
@@ -178,6 +185,15 @@ export {
178
185
  type NewOrderRequest,
179
186
  type Order,
180
187
  type OrderList,
188
+ type OrderPreview,
189
+ type OrderPreviewAmount,
190
+ type OrderPreviewDelta,
191
+ type OrderPreviewEntry,
192
+ type OrderPreviewEntryList,
193
+ type OrderPreviewError,
194
+ type OrderPreviewMarginDetails,
195
+ type OrderPreviewOutcome,
196
+ type OrderPreviewPosition,
181
197
  type OrderStatus,
182
198
  type OrderStrategy,
183
199
  type OrderType,
@@ -194,6 +210,7 @@ export {
194
210
  type OrderGetExecutionsResponse,
195
211
  type OrderGetOrderByIDResponse,
196
212
  type OrderGetOrdersResponse,
213
+ type OrderPreviewOrdersResponse,
197
214
  type OrderReplaceOrderResponse,
198
215
  type OrderSubmitOrdersResponse,
199
216
  type OrderCancelAllOpenOrdersParams,
@@ -201,6 +218,7 @@ export {
201
218
  type OrderGetExecutionsParams,
202
219
  type OrderGetOrderByIDParams,
203
220
  type OrderGetOrdersParams,
221
+ type OrderPreviewOrdersParams,
204
222
  type OrderReplaceOrderParams,
205
223
  type OrderSubmitOrdersParams,
206
224
  } from './orders';
@@ -6,6 +6,7 @@ export {
6
6
  type AnalystDistribution,
7
7
  type AnalystRating,
8
8
  type FiscalPeriodType,
9
+ type FiscalQuarter,
9
10
  type InstrumentAllEventsData,
10
11
  type InstrumentAnalystConsensus,
11
12
  type InstrumentBalanceSheetStatement,
@@ -14,6 +15,8 @@ export {
14
15
  type InstrumentCashFlowStatementList,
15
16
  type InstrumentDividendEvent,
16
17
  type InstrumentEarnings,
18
+ type InstrumentEarningsTranscript,
19
+ type InstrumentEarningsTranscriptList,
17
20
  type InstrumentEventEnvelope,
18
21
  type InstrumentEventIpoItem,
19
22
  type InstrumentEventsByDate,
@@ -29,6 +32,7 @@ export {
29
32
  type InstrumentDataGetInstrumentAnalystConsensusResponse,
30
33
  type InstrumentDataGetInstrumentBalanceSheetStatementsResponse,
31
34
  type InstrumentDataGetInstrumentCashFlowStatementsResponse,
35
+ type InstrumentDataGetInstrumentEarningsTranscriptsResponse,
32
36
  type InstrumentDataGetInstrumentEventsResponse,
33
37
  type InstrumentDataGetInstrumentFundamentalsResponse,
34
38
  type InstrumentDataGetInstrumentIncomeStatementsResponse,
@@ -36,6 +40,7 @@ export {
36
40
  type InstrumentDataGetInstrumentAnalystConsensusParams,
37
41
  type InstrumentDataGetInstrumentBalanceSheetStatementsParams,
38
42
  type InstrumentDataGetInstrumentCashFlowStatementsParams,
43
+ type InstrumentDataGetInstrumentEarningsTranscriptsParams,
39
44
  type InstrumentDataGetInstrumentEventsParams,
40
45
  type InstrumentDataGetInstrumentIncomeStatementsParams,
41
46
  } from './instrument-data';
@@ -147,6 +147,39 @@ export class InstrumentData extends APIResource {
147
147
  });
148
148
  }
149
149
 
150
+ /**
151
+ * Retrieves earnings call transcripts for a specific instrument, newest fiscal
152
+ * period first.
153
+ *
154
+ * Defaults: `page_size` is 1 and is capped at 5, because each transcript is large.
155
+ * Send `event_date` with the `date` of an earnings event from the events endpoints
156
+ * to fetch that event's transcript. The `date.gt`, `date.gte`, `date.lt`, and
157
+ * `date.lte` filters compare the call date itself. An instrument without
158
+ * transcripts returns an empty list.
159
+ *
160
+ * Pagination metadata does not include `total_items` or `total_pages` for this
161
+ * endpoint. Use `next_page_token` to detect whether more results exist. The token
162
+ * does not carry filters: send the same filters with every page request.
163
+ *
164
+ * @example
165
+ * ```ts
166
+ * const response =
167
+ * await client.v1.instrumentData.getInstrumentEarningsTranscripts(
168
+ * 'x',
169
+ * );
170
+ * ```
171
+ */
172
+ getInstrumentEarningsTranscripts(
173
+ instrumentID: string,
174
+ query: InstrumentDataGetInstrumentEarningsTranscriptsParams | null | undefined = {},
175
+ options?: RequestOptions,
176
+ ): APIPromise<InstrumentDataGetInstrumentEarningsTranscriptsResponse> {
177
+ return this._client.get(path`/v1/instruments/${instrumentID}/earnings-transcripts`, {
178
+ query,
179
+ ...options,
180
+ });
181
+ }
182
+
150
183
  /**
151
184
  * Retrieves corporate events (earnings, dividends, splits, IPO) for an instrument,
152
185
  * grouped by event type. Filter to specific types via `event_types`.
@@ -262,6 +295,11 @@ export type AnalystRating = 'STRONG_BUY' | 'BUY' | 'HOLD' | 'SELL' | 'STRONG_SEL
262
295
  */
263
296
  export type FiscalPeriodType = 'QUARTERLY' | 'ANNUAL' | 'TTM' | 'BIANNUAL';
264
297
 
298
+ /**
299
+ * Fiscal quarter of a reporting period
300
+ */
301
+ export type FiscalQuarter = 'Q1' | 'Q2' | 'Q3' | 'Q4';
302
+
265
303
  /**
266
304
  * All-events payload grouped by date.
267
305
  */
@@ -892,6 +930,13 @@ export interface InstrumentEarnings {
892
930
  */
893
931
  date: string;
894
932
 
933
+ /**
934
+ * True when an earnings call transcript exists for this event. Fetch it with
935
+ * `GET /v1/instruments/{instrument_id}/earnings-transcripts?event_date=<date>`,
936
+ * where `<date>` is this event's `date`.
937
+ */
938
+ transcript_available: boolean;
939
+
895
940
  /**
896
941
  * The actual earnings per share (EPS) for the period When a null/undefined value
897
942
  * is observed, it indicates that there is no available data.
@@ -935,6 +980,38 @@ export interface InstrumentEarnings {
935
980
  revenue_surprise_percent?: string | null;
936
981
  }
937
982
 
983
+ /**
984
+ * An earnings call transcript for one fiscal quarter.
985
+ */
986
+ export interface InstrumentEarningsTranscript {
987
+ /**
988
+ * The full text of the transcript
989
+ */
990
+ content: string;
991
+
992
+ /**
993
+ * The date of the earnings call
994
+ */
995
+ date: string;
996
+
997
+ /**
998
+ * The fiscal quarter of the call
999
+ */
1000
+ period: FiscalQuarter;
1001
+
1002
+ /**
1003
+ * The type of fiscal period. Always `QUARTERLY`.
1004
+ */
1005
+ period_type: FiscalPeriodType;
1006
+
1007
+ /**
1008
+ * The fiscal year of the call
1009
+ */
1010
+ year: number;
1011
+ }
1012
+
1013
+ export type InstrumentEarningsTranscriptList = Array<InstrumentEarningsTranscript>;
1014
+
938
1015
  /**
939
1016
  * Unified envelope for the all-events response.
940
1017
  */
@@ -1527,6 +1604,10 @@ export interface InstrumentDataGetInstrumentCashFlowStatementsResponse extends S
1527
1604
  data: InstrumentCashFlowStatementList;
1528
1605
  }
1529
1606
 
1607
+ export interface InstrumentDataGetInstrumentEarningsTranscriptsResponse extends Shared.BaseResponse {
1608
+ data: InstrumentEarningsTranscriptList;
1609
+ }
1610
+
1530
1611
  export interface InstrumentDataGetInstrumentEventsResponse extends Shared.BaseResponse {
1531
1612
  /**
1532
1613
  * Grouped instrument events by type
@@ -1642,6 +1723,80 @@ export interface InstrumentDataGetInstrumentCashFlowStatementsParams {
1642
1723
  to_date?: string;
1643
1724
  }
1644
1725
 
1726
+ export interface InstrumentDataGetInstrumentEarningsTranscriptsParams {
1727
+ date?: InstrumentDataGetInstrumentEarningsTranscriptsParams.Date;
1728
+
1729
+ /**
1730
+ * Return only transcripts whose call date is within one day of this earnings event
1731
+ * date (`YYYY-MM-DD`). Use an event's `date` to fetch that event's transcript.
1732
+ */
1733
+ event_date?: string;
1734
+
1735
+ /**
1736
+ * The number of items to return per page. Only used when page_token is not
1737
+ * provided.
1738
+ */
1739
+ page_size?: number;
1740
+
1741
+ /**
1742
+ * Token for retrieving the next or previous page of results. Contains encoded
1743
+ * pagination state; when provided, page_size is ignored.
1744
+ */
1745
+ page_token?: string;
1746
+
1747
+ /**
1748
+ * Only return the transcript for this fiscal quarter.
1749
+ */
1750
+ period?: 'Q1' | 'Q2' | 'Q3' | 'Q4';
1751
+
1752
+ /**
1753
+ * Only return the transcript for this fiscal year.
1754
+ */
1755
+ year?: number;
1756
+ }
1757
+
1758
+ export namespace InstrumentDataGetInstrumentEarningsTranscriptsParams {
1759
+ export interface Date {
1760
+ /**
1761
+ * Return only rows where `date` is strictly after the given value. A bare
1762
+ * `YYYY-MM-DD` date expands to the end of that day (UTC), so this matches from the
1763
+ * start of the following day. See
1764
+ * [Range filters](https://docs.clearstreet.com/guides/api-fundamentals#range-filters)
1765
+ * for accepted formats, bare-date expansion, and combining bounds. Returns 400 if
1766
+ * the resulting range is inverted.
1767
+ */
1768
+ gt?: string;
1769
+
1770
+ /**
1771
+ * Return only rows where `date` is on or after the given value. A bare
1772
+ * `YYYY-MM-DD` date expands to the start of that day (UTC). See
1773
+ * [Range filters](https://docs.clearstreet.com/guides/api-fundamentals#range-filters)
1774
+ * for accepted formats, bare-date expansion, and combining bounds. Returns 400 if
1775
+ * the resulting range is inverted.
1776
+ */
1777
+ gte?: string;
1778
+
1779
+ /**
1780
+ * Return only rows where `date` is strictly before the given value. A bare
1781
+ * `YYYY-MM-DD` date expands to the start of that day (UTC). See
1782
+ * [Range filters](https://docs.clearstreet.com/guides/api-fundamentals#range-filters)
1783
+ * for accepted formats, bare-date expansion, and combining bounds. Returns 400 if
1784
+ * the resulting range is inverted.
1785
+ */
1786
+ lt?: string;
1787
+
1788
+ /**
1789
+ * Return only rows where `date` is on or before the given value. A bare
1790
+ * `YYYY-MM-DD` date expands to the end of that day (UTC), so this matches through
1791
+ * the end of that day. See
1792
+ * [Range filters](https://docs.clearstreet.com/guides/api-fundamentals#range-filters)
1793
+ * for accepted formats, bare-date expansion, and combining bounds. Returns 400 if
1794
+ * the resulting range is inverted.
1795
+ */
1796
+ lte?: string;
1797
+ }
1798
+ }
1799
+
1645
1800
  export interface InstrumentDataGetInstrumentEventsParams {
1646
1801
  /**
1647
1802
  * Filter by event type(s). Comma-delimited list. Example:
@@ -1693,6 +1848,7 @@ export declare namespace InstrumentData {
1693
1848
  type AnalystDistribution as AnalystDistribution,
1694
1849
  type AnalystRating as AnalystRating,
1695
1850
  type FiscalPeriodType as FiscalPeriodType,
1851
+ type FiscalQuarter as FiscalQuarter,
1696
1852
  type InstrumentAllEventsData as InstrumentAllEventsData,
1697
1853
  type InstrumentAnalystConsensus as InstrumentAnalystConsensus,
1698
1854
  type InstrumentBalanceSheetStatement as InstrumentBalanceSheetStatement,
@@ -1701,6 +1857,8 @@ export declare namespace InstrumentData {
1701
1857
  type InstrumentCashFlowStatementList as InstrumentCashFlowStatementList,
1702
1858
  type InstrumentDividendEvent as InstrumentDividendEvent,
1703
1859
  type InstrumentEarnings as InstrumentEarnings,
1860
+ type InstrumentEarningsTranscript as InstrumentEarningsTranscript,
1861
+ type InstrumentEarningsTranscriptList as InstrumentEarningsTranscriptList,
1704
1862
  type InstrumentEventEnvelope as InstrumentEventEnvelope,
1705
1863
  type InstrumentEventIpoItem as InstrumentEventIpoItem,
1706
1864
  type InstrumentEventsByDate as InstrumentEventsByDate,
@@ -1716,6 +1874,7 @@ export declare namespace InstrumentData {
1716
1874
  type InstrumentDataGetInstrumentAnalystConsensusResponse as InstrumentDataGetInstrumentAnalystConsensusResponse,
1717
1875
  type InstrumentDataGetInstrumentBalanceSheetStatementsResponse as InstrumentDataGetInstrumentBalanceSheetStatementsResponse,
1718
1876
  type InstrumentDataGetInstrumentCashFlowStatementsResponse as InstrumentDataGetInstrumentCashFlowStatementsResponse,
1877
+ type InstrumentDataGetInstrumentEarningsTranscriptsResponse as InstrumentDataGetInstrumentEarningsTranscriptsResponse,
1719
1878
  type InstrumentDataGetInstrumentEventsResponse as InstrumentDataGetInstrumentEventsResponse,
1720
1879
  type InstrumentDataGetInstrumentFundamentalsResponse as InstrumentDataGetInstrumentFundamentalsResponse,
1721
1880
  type InstrumentDataGetInstrumentIncomeStatementsResponse as InstrumentDataGetInstrumentIncomeStatementsResponse,
@@ -1723,6 +1882,7 @@ export declare namespace InstrumentData {
1723
1882
  type InstrumentDataGetInstrumentAnalystConsensusParams as InstrumentDataGetInstrumentAnalystConsensusParams,
1724
1883
  type InstrumentDataGetInstrumentBalanceSheetStatementsParams as InstrumentDataGetInstrumentBalanceSheetStatementsParams,
1725
1884
  type InstrumentDataGetInstrumentCashFlowStatementsParams as InstrumentDataGetInstrumentCashFlowStatementsParams,
1885
+ type InstrumentDataGetInstrumentEarningsTranscriptsParams as InstrumentDataGetInstrumentEarningsTranscriptsParams,
1726
1886
  type InstrumentDataGetInstrumentEventsParams as InstrumentDataGetInstrumentEventsParams,
1727
1887
  type InstrumentDataGetInstrumentIncomeStatementsParams as InstrumentDataGetInstrumentIncomeStatementsParams,
1728
1888
  };
@@ -36,10 +36,12 @@ export class MarketData extends APIResource {
36
36
  /**
37
37
  * Get market data snapshots for one or more securities.
38
38
  *
39
- * Two targeting modes, mutually exclusive: `instrument_ids` (1-100 ids), or
39
+ * Three targeting modes, mutually exclusive: `instrument_ids` (1-100 ids),
40
40
  * `underlying_instrument_id` + `expiry` together, which resolves the underlier's
41
41
  * option chain for that expiry and returns a snapshot for every contract in it
42
- * (uncapped).
42
+ * (uncapped), or `event_codes` (1-100 event tickers), which returns a snapshot for
43
+ * every market in those events in any status (uncapped). Unknown event codes are
44
+ * ignored.
43
45
  *
44
46
  * @example
45
47
  * ```ts
@@ -205,6 +205,14 @@ export interface Instrument {
205
205
  */
206
206
  name?: string | null;
207
207
 
208
+ /**
209
+ * Why the instrument is `NOT_SHORTABLE`: every reason that applies, using the same
210
+ * codes as the `type` of the equivalent order-preview errors. Omitted unless
211
+ * `shortable_attribute` is `NOT_SHORTABLE`. When a null/undefined value is
212
+ * observed, it indicates it does not apply.
213
+ */
214
+ not_shortable_reasons?: Array<NotShortableReason> | null;
215
+
208
216
  /**
209
217
  * Notional average daily volume (ADV multiplied by the cax-adjusted close when
210
218
  * present, the raw previous close otherwise). When a null/undefined value is
@@ -242,6 +250,16 @@ export interface Instrument {
242
250
  */
243
251
  short_margin_rate?: string | null;
244
252
 
253
+ /**
254
+ * How readily the instrument can be shorted: `EASY_TO_BORROW`, `HARD_TO_BORROW`,
255
+ * or `NOT_SHORTABLE`. Easy-to-borrow instruments can be shorted without a locate.
256
+ * A hard-to-borrow instrument is not easy to borrow but has locate inventory
257
+ * remaining and supports short selling; anything else is not shortable. Omitted
258
+ * for instruments that are not tradable equities. When a null/undefined value is
259
+ * observed, it indicates it does not apply.
260
+ */
261
+ shortable_attribute?: ShortableAttribute | null;
262
+
245
263
  /**
246
264
  * Price bands this instrument quotes on, ascending. Absent when we have no
247
265
  * schedule for it, which includes an option whose penny-program status our
@@ -350,6 +368,14 @@ export interface InstrumentCore {
350
368
  */
351
369
  name?: string | null;
352
370
 
371
+ /**
372
+ * Why the instrument is `NOT_SHORTABLE`: every reason that applies, using the same
373
+ * codes as the `type` of the equivalent order-preview errors. Omitted unless
374
+ * `shortable_attribute` is `NOT_SHORTABLE`. When a null/undefined value is
375
+ * observed, it indicates it does not apply.
376
+ */
377
+ not_shortable_reasons?: Array<NotShortableReason> | null;
378
+
353
379
  /**
354
380
  * Notional average daily volume (ADV multiplied by the cax-adjusted close when
355
381
  * present, the raw previous close otherwise). When a null/undefined value is
@@ -369,6 +395,16 @@ export interface InstrumentCore {
369
395
  */
370
396
  short_margin_rate?: string | null;
371
397
 
398
+ /**
399
+ * How readily the instrument can be shorted: `EASY_TO_BORROW`, `HARD_TO_BORROW`,
400
+ * or `NOT_SHORTABLE`. Easy-to-borrow instruments can be shorted without a locate.
401
+ * A hard-to-borrow instrument is not easy to borrow but has locate inventory
402
+ * remaining and supports short selling; anything else is not shortable. Omitted
403
+ * for instruments that are not tradable equities. When a null/undefined value is
404
+ * observed, it indicates it does not apply.
405
+ */
406
+ shortable_attribute?: ShortableAttribute | null;
407
+
372
408
  /**
373
409
  * Price bands this instrument quotes on, ascending. Absent when we have no
374
410
  * schedule for it, which includes an option whose penny-program status our
@@ -384,6 +420,11 @@ export type InstrumentCoreList = Array<InstrumentCore>;
384
420
  */
385
421
  export type ListingType = 'STANDARD' | 'FLEX' | 'OTC';
386
422
 
423
+ /**
424
+ * Why an instrument cannot be shorted.
425
+ */
426
+ export type NotShortableReason = 'INSUFFICIENT_LOCATE_INVENTORY' | 'UNSUPPORTED_SECURITY';
427
+
387
428
  /**
388
429
  * An options expiry date, annotated with which settlement cycles have listed
389
430
  * contracts on it.
@@ -508,10 +549,21 @@ export interface OptionsContract {
508
549
  * value is observed, it indicates that there is no available data.
509
550
  */
510
551
  underlying_instrument_id?: string | null;
552
+
553
+ /**
554
+ * Type of the underlying instrument, alongside `underlying_instrument_id` When a
555
+ * null/undefined value is observed, it indicates that there is no available data.
556
+ */
557
+ underlying_instrument_type?: V1API.SecurityType | null;
511
558
  }
512
559
 
513
560
  export type OptionsContractList = Array<OptionsContract>;
514
561
 
562
+ /**
563
+ * How readily a tradable equity can be shorted.
564
+ */
565
+ export type ShortableAttribute = 'EASY_TO_BORROW' | 'HARD_TO_BORROW' | 'NOT_SHORTABLE';
566
+
515
567
  /**
516
568
  * One band of an instrument's tick schedule. A price in the band is valid only if
517
569
  * it is a whole multiple of `tick_size`. Bands describe the instrument itself: on
@@ -726,9 +778,11 @@ export declare namespace Instruments {
726
778
  type InstrumentCore as InstrumentCore,
727
779
  type InstrumentCoreList as InstrumentCoreList,
728
780
  type ListingType as ListingType,
781
+ type NotShortableReason as NotShortableReason,
729
782
  type OptionExpiryDate as OptionExpiryDate,
730
783
  type OptionsContract as OptionsContract,
731
784
  type OptionsContractList as OptionsContractList,
785
+ type ShortableAttribute as ShortableAttribute,
732
786
  type TickRule as TickRule,
733
787
  type InstrumentGetInstrumentByIDResponse as InstrumentGetInstrumentByIDResponse,
734
788
  type InstrumentGetInstrumentsResponse as InstrumentGetInstrumentsResponse,
@@ -12,8 +12,6 @@ import { path } from '../../internal/utils/path';
12
12
  */
13
13
  export class Locates extends APIResource {
14
14
  /**
15
- * > **Beta** — this endpoint may change before general availability.
16
- *
17
15
  * Fetch one locate by id, matched against the locate request id, locate id, and
18
16
  * client request id, across all days in force.
19
17
  *
@@ -35,8 +33,6 @@ export class Locates extends APIResource {
35
33
  }
36
34
 
37
35
  /**
38
- * > **Beta** — this endpoint may change before general availability.
39
- *
40
36
  * Fetch the cached locate borrow rate for one instrument. Rates refresh
41
37
  * periodically; `404` means no rate is currently cached for the instrument.
42
38
  *
@@ -55,8 +51,6 @@ export class Locates extends APIResource {
55
51
  }
56
52
 
57
53
  /**
58
- * > **Beta** — this endpoint may change before general availability.
59
- *
60
54
  * Fetch the cached locate borrow rates for up to 1,000 instruments. The response
61
55
  * returns one row per requested instrument, in request order. Each row carries
62
56
  * either the `rate` or an `error` — a `404` when the instrument is unknown or has
@@ -78,8 +72,6 @@ export class Locates extends APIResource {
78
72
  }
79
73
 
80
74
  /**
81
- * > **Beta** — this endpoint may change before general availability.
82
- *
83
75
  * List locates for the account on one effective date, which defaults to today's
84
76
  * New York calendar date. Filter by comma-separated statuses and instrument ids or
85
77
  * symbols.