@infosel-sdk/markets 1.2.3 → 2.0.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 (212) hide show
  1. package/CHANGELOG.md +281 -3
  2. package/README.md +111 -423
  3. package/package.json +1 -1
  4. package/src/__tests__/__mocks__/apis/markets-api.mock.d.ts +0 -73
  5. package/src/__tests__/__mocks__/apis/markets-api.mock.js +3 -45
  6. package/src/__tests__/__mocks__/apis/markets-api.mock.js.map +1 -1
  7. package/src/__tests__/utils/mock-datasource.js +0 -16
  8. package/src/__tests__/utils/mock-datasource.js.map +1 -1
  9. package/src/__tests__/utils/mock-factories.d.ts +0 -104
  10. package/src/__tests__/utils/mock-factories.js +6 -24
  11. package/src/__tests__/utils/mock-factories.js.map +1 -1
  12. package/src/__tests__/utils/mock-repository.d.ts +0 -12
  13. package/src/__tests__/utils/mock-repository.js +2 -46
  14. package/src/__tests__/utils/mock-repository.js.map +1 -1
  15. package/src/__tests__/utils/test-helpers.d.ts +0 -2
  16. package/src/__tests__/utils/test-helpers.js +0 -6
  17. package/src/__tests__/utils/test-helpers.js.map +1 -1
  18. package/src/data/datasources/markets_datasource_impl.d.ts +6 -49
  19. package/src/data/datasources/markets_datasource_impl.js +11 -661
  20. package/src/data/datasources/markets_datasource_impl.js.map +1 -1
  21. package/src/data/di/infosel_markets_component.d.ts +4 -51
  22. package/src/data/di/infosel_markets_component.js +11 -115
  23. package/src/data/di/infosel_markets_component.js.map +1 -1
  24. package/src/data/di/infosel_markets_module.d.ts +1 -4
  25. package/src/data/di/infosel_markets_module.js +1 -7
  26. package/src/data/di/infosel_markets_module.js.map +1 -1
  27. package/src/data/mappers/markets_mapper.d.ts +1 -41
  28. package/src/data/mappers/markets_mapper.js +17 -114
  29. package/src/data/mappers/markets_mapper.js.map +1 -1
  30. package/src/data/models/instrument_fields_model.d.ts +17 -0
  31. package/src/data/repositories/markets_repository_impl.d.ts +4 -42
  32. package/src/data/repositories/markets_repository_impl.js +0 -48
  33. package/src/data/repositories/markets_repository_impl.js.map +1 -1
  34. package/src/domain/datasources/markets_datasource.d.ts +4 -41
  35. package/src/domain/di/markets_component.d.ts +18 -35
  36. package/src/domain/di/markets_module.d.ts +1 -2
  37. package/src/domain/entities/get_last_request.d.ts +4 -0
  38. package/src/{data/models/user_model.js → domain/entities/get_last_request.js} +1 -1
  39. package/src/domain/entities/get_last_request.js.map +1 -0
  40. package/src/domain/entities/index.d.ts +0 -18
  41. package/src/domain/entities/index.js +0 -18
  42. package/src/domain/entities/index.js.map +1 -1
  43. package/src/domain/entities/instrument_fields.d.ts +17 -0
  44. package/src/domain/repositories/markets_repository.d.ts +4 -37
  45. package/src/domain/use_cases/get_instrument_fields_use_case.d.ts +3 -2
  46. package/src/domain/use_cases/get_instrument_fields_use_case.js.map +1 -1
  47. package/src/domain/use_cases/get_instrument_multiple_fields_use_case.d.ts +2 -1
  48. package/src/domain/use_cases/get_instrument_multiple_fields_use_case.js.map +1 -1
  49. package/src/index.d.ts +1 -4
  50. package/src/index.js +0 -2
  51. package/src/index.js.map +1 -1
  52. package/src/data/models/delete_workspace_response_model.d.ts +0 -5
  53. package/src/data/models/delete_workspace_response_model.js +0 -3
  54. package/src/data/models/delete_workspace_response_model.js.map +0 -1
  55. package/src/data/models/get_user_workspaces_response_model.d.ts +0 -13
  56. package/src/data/models/get_user_workspaces_response_model.js +0 -3
  57. package/src/data/models/get_user_workspaces_response_model.js.map +0 -1
  58. package/src/data/models/project_model.d.ts +0 -12
  59. package/src/data/models/project_model.js +0 -3
  60. package/src/data/models/project_model.js.map +0 -1
  61. package/src/data/models/project_widgets_response_model.d.ts +0 -8
  62. package/src/data/models/project_widgets_response_model.js +0 -3
  63. package/src/data/models/project_widgets_response_model.js.map +0 -1
  64. package/src/data/models/user_model.d.ts +0 -7
  65. package/src/data/models/user_model.js.map +0 -1
  66. package/src/data/models/widget_chart_configuration_model.d.ts +0 -4
  67. package/src/data/models/widget_chart_configuration_model.js +0 -3
  68. package/src/data/models/widget_chart_configuration_model.js.map +0 -1
  69. package/src/data/models/widget_dynamic_table_configuration.d.ts +0 -12
  70. package/src/data/models/widget_dynamic_table_configuration.js +0 -3
  71. package/src/data/models/widget_dynamic_table_configuration.js.map +0 -1
  72. package/src/data/models/widget_layout_model.d.ts +0 -6
  73. package/src/data/models/widget_layout_model.js +0 -3
  74. package/src/data/models/widget_layout_model.js.map +0 -1
  75. package/src/data/models/widget_model.d.ts +0 -19
  76. package/src/data/models/widget_model.js +0 -3
  77. package/src/data/models/widget_model.js.map +0 -1
  78. package/src/data/models/widget_size_model.d.ts +0 -9
  79. package/src/data/models/widget_size_model.js +0 -3
  80. package/src/data/models/widget_size_model.js.map +0 -1
  81. package/src/data/models/widget_table_column_format_model.d.ts +0 -6
  82. package/src/data/models/widget_table_column_format_model.js +0 -3
  83. package/src/data/models/widget_table_column_format_model.js.map +0 -1
  84. package/src/data/models/widget_table_column_model.d.ts +0 -8
  85. package/src/data/models/widget_table_column_model.js +0 -3
  86. package/src/data/models/widget_table_column_model.js.map +0 -1
  87. package/src/data/models/widget_ticker_configuration.d.ts +0 -7
  88. package/src/data/models/widget_ticker_configuration.js +0 -3
  89. package/src/data/models/widget_ticker_configuration.js.map +0 -1
  90. package/src/data/models/workspace_model.d.ts +0 -6
  91. package/src/data/models/workspace_model.js +0 -3
  92. package/src/data/models/workspace_model.js.map +0 -1
  93. package/src/domain/entities/chart_configuration.d.ts +0 -5
  94. package/src/domain/entities/chart_configuration.js +0 -3
  95. package/src/domain/entities/chart_configuration.js.map +0 -1
  96. package/src/domain/entities/create_instrument_request.d.ts +0 -5
  97. package/src/domain/entities/create_instrument_request.js +0 -3
  98. package/src/domain/entities/create_instrument_request.js.map +0 -1
  99. package/src/domain/entities/create_widget_request.d.ts +0 -30
  100. package/src/domain/entities/create_widget_request.js +0 -3
  101. package/src/domain/entities/create_widget_request.js.map +0 -1
  102. package/src/domain/entities/create_workspace_request.d.ts +0 -5
  103. package/src/domain/entities/create_workspace_request.js +0 -3
  104. package/src/domain/entities/create_workspace_request.js.map +0 -1
  105. package/src/domain/entities/delete_workspace_request.d.ts +0 -3
  106. package/src/domain/entities/delete_workspace_request.js +0 -3
  107. package/src/domain/entities/delete_workspace_request.js.map +0 -1
  108. package/src/domain/entities/duplicate_widget_request.d.ts +0 -5
  109. package/src/domain/entities/duplicate_widget_request.js +0 -3
  110. package/src/domain/entities/duplicate_widget_request.js.map +0 -1
  111. package/src/domain/entities/get_instruments_request.d.ts +0 -12
  112. package/src/domain/entities/get_instruments_request.js +0 -3
  113. package/src/domain/entities/get_instruments_request.js.map +0 -1
  114. package/src/domain/entities/get_project_widgets_request.d.ts +0 -12
  115. package/src/domain/entities/get_project_widgets_request.js +0 -3
  116. package/src/domain/entities/get_project_widgets_request.js.map +0 -1
  117. package/src/domain/entities/get_user_workspaces_request.d.ts +0 -4
  118. package/src/domain/entities/get_user_workspaces_request.js +0 -3
  119. package/src/domain/entities/get_user_workspaces_request.js.map +0 -1
  120. package/src/domain/entities/get_workspace_request.d.ts +0 -3
  121. package/src/domain/entities/get_workspace_request.js +0 -3
  122. package/src/domain/entities/get_workspace_request.js.map +0 -1
  123. package/src/domain/entities/get_workspaces_by_user_request.d.ts +0 -12
  124. package/src/domain/entities/get_workspaces_by_user_request.js +0 -3
  125. package/src/domain/entities/get_workspaces_by_user_request.js.map +0 -1
  126. package/src/domain/entities/get_workspaces_request.d.ts +0 -12
  127. package/src/domain/entities/get_workspaces_request.js +0 -3
  128. package/src/domain/entities/get_workspaces_request.js.map +0 -1
  129. package/src/domain/entities/instruments_response.d.ts +0 -6
  130. package/src/domain/entities/instruments_response.js +0 -3
  131. package/src/domain/entities/instruments_response.js.map +0 -1
  132. package/src/domain/entities/news_configuration.d.ts +0 -8
  133. package/src/domain/entities/news_configuration.js +0 -3
  134. package/src/domain/entities/news_configuration.js.map +0 -1
  135. package/src/domain/entities/project_widgets_container.d.ts +0 -12
  136. package/src/domain/entities/project_widgets_container.js +0 -3
  137. package/src/domain/entities/project_widgets_container.js.map +0 -1
  138. package/src/domain/entities/update_widget_chart_request.d.ts +0 -4
  139. package/src/domain/entities/update_widget_chart_request.js +0 -3
  140. package/src/domain/entities/update_widget_chart_request.js.map +0 -1
  141. package/src/domain/entities/update_widget_instruments_reques.d.ts +0 -11
  142. package/src/domain/entities/update_widget_instruments_reques.js +0 -3
  143. package/src/domain/entities/update_widget_instruments_reques.js.map +0 -1
  144. package/src/domain/entities/update_workspace_request.d.ts +0 -5
  145. package/src/domain/entities/update_workspace_request.js +0 -3
  146. package/src/domain/entities/update_workspace_request.js.map +0 -1
  147. package/src/domain/entities/user_workspaces.d.ts +0 -8
  148. package/src/domain/entities/user_workspaces.js +0 -3
  149. package/src/domain/entities/user_workspaces.js.map +0 -1
  150. package/src/domain/entities/widget.d.ts +0 -66
  151. package/src/domain/entities/widget.js +0 -3
  152. package/src/domain/entities/widget.js.map +0 -1
  153. package/src/domain/entities/widget_size_config.d.ts +0 -13
  154. package/src/domain/entities/widget_size_config.js +0 -3
  155. package/src/domain/entities/widget_size_config.js.map +0 -1
  156. package/src/domain/entities/workspace.d.ts +0 -5
  157. package/src/domain/entities/workspace.js +0 -3
  158. package/src/domain/entities/workspace.js.map +0 -1
  159. package/src/domain/entities/workspace_widgets.d.ts +0 -6
  160. package/src/domain/entities/workspace_widgets.js +0 -3
  161. package/src/domain/entities/workspace_widgets.js.map +0 -1
  162. package/src/domain/entities/workspaces_container.d.ts +0 -18
  163. package/src/domain/entities/workspaces_container.js +0 -3
  164. package/src/domain/entities/workspaces_container.js.map +0 -1
  165. package/src/domain/use_cases/create_instrument_use_case.d.ts +0 -9
  166. package/src/domain/use_cases/create_instrument_use_case.js +0 -22
  167. package/src/domain/use_cases/create_instrument_use_case.js.map +0 -1
  168. package/src/domain/use_cases/create_widget_use_case.d.ts +0 -9
  169. package/src/domain/use_cases/create_widget_use_case.js +0 -22
  170. package/src/domain/use_cases/create_widget_use_case.js.map +0 -1
  171. package/src/domain/use_cases/create_workspace_use_case.d.ts +0 -9
  172. package/src/domain/use_cases/create_workspace_use_case.js +0 -22
  173. package/src/domain/use_cases/create_workspace_use_case.js.map +0 -1
  174. package/src/domain/use_cases/delete_instrument_use_case.d.ts +0 -7
  175. package/src/domain/use_cases/delete_instrument_use_case.js +0 -19
  176. package/src/domain/use_cases/delete_instrument_use_case.js.map +0 -1
  177. package/src/domain/use_cases/delete_widget_use_case.d.ts +0 -7
  178. package/src/domain/use_cases/delete_widget_use_case.js +0 -19
  179. package/src/domain/use_cases/delete_widget_use_case.js.map +0 -1
  180. package/src/domain/use_cases/delete_workspace_use_case.d.ts +0 -8
  181. package/src/domain/use_cases/delete_workspace_use_case.js +0 -22
  182. package/src/domain/use_cases/delete_workspace_use_case.js.map +0 -1
  183. package/src/domain/use_cases/duplicate_widget_use_case.d.ts +0 -8
  184. package/src/domain/use_cases/duplicate_widget_use_case.js +0 -15
  185. package/src/domain/use_cases/duplicate_widget_use_case.js.map +0 -1
  186. package/src/domain/use_cases/get_instruments_use_case.d.ts +0 -9
  187. package/src/domain/use_cases/get_instruments_use_case.js +0 -16
  188. package/src/domain/use_cases/get_instruments_use_case.js.map +0 -1
  189. package/src/domain/use_cases/get_project_widgets_use_case.d.ts +0 -9
  190. package/src/domain/use_cases/get_project_widgets_use_case.js +0 -19
  191. package/src/domain/use_cases/get_project_widgets_use_case.js.map +0 -1
  192. package/src/domain/use_cases/get_user_workspace_use_case.d.ts +0 -9
  193. package/src/domain/use_cases/get_user_workspace_use_case.js +0 -22
  194. package/src/domain/use_cases/get_user_workspace_use_case.js.map +0 -1
  195. package/src/domain/use_cases/get_workspace_use_case.d.ts +0 -9
  196. package/src/domain/use_cases/get_workspace_use_case.js +0 -19
  197. package/src/domain/use_cases/get_workspace_use_case.js.map +0 -1
  198. package/src/domain/use_cases/get_workspaces_by_user_use_case.d.ts +0 -9
  199. package/src/domain/use_cases/get_workspaces_by_user_use_case.js +0 -19
  200. package/src/domain/use_cases/get_workspaces_by_user_use_case.js.map +0 -1
  201. package/src/domain/use_cases/get_workspaces_use_case.d.ts +0 -9
  202. package/src/domain/use_cases/get_workspaces_use_case.js +0 -19
  203. package/src/domain/use_cases/get_workspaces_use_case.js.map +0 -1
  204. package/src/domain/use_cases/update_widget_chart_use_case.d.ts +0 -7
  205. package/src/domain/use_cases/update_widget_chart_use_case.js +0 -15
  206. package/src/domain/use_cases/update_widget_chart_use_case.js.map +0 -1
  207. package/src/domain/use_cases/update_widget_instruments_use_case.d.ts +0 -9
  208. package/src/domain/use_cases/update_widget_instruments_use_case.js +0 -22
  209. package/src/domain/use_cases/update_widget_instruments_use_case.js.map +0 -1
  210. package/src/domain/use_cases/update_workspace_use_case.d.ts +0 -8
  211. package/src/domain/use_cases/update_workspace_use_case.js +0 -15
  212. package/src/domain/use_cases/update_workspace_use_case.js.map +0 -1
package/README.md CHANGED
@@ -1,15 +1,14 @@
1
1
  # @infosel-sdk/markets
2
2
 
3
- SDK de Mercados Financieros para la plataforma Infosel. Proporciona herramientas completas para acceder a datos de mercado, gestionar instrumentos, crear widgets y manejar espacios de trabajo para aplicaciones financieras.
3
+ SDK de Mercados Financieros para la plataforma Infosel. Proporciona herramientas completas para acceder a datos de mercado, buscar instrumentos y obtener detalles financieros para aplicaciones financieras.
4
4
 
5
5
  ## 🚀 Características
6
6
 
7
7
  - **Acceso a Datos de Mercado**: Datos de mercado en tiempo real e históricos
8
- - **Gestión de Instrumentos**: Buscar, crear y gestionar instrumentos financieros
9
- - **Sistema de Widgets**: Crear y gestionar widgets financieros personalizables
10
- - **Gestión de Espacios de Trabajo**: Organizar y gestionar espacios de trabajo de usuarios
8
+ - **Búsqueda de Instrumentos**: Buscar instrumentos financieros con filtros avanzados
11
9
  - **Datos de Gráficos**: Acceder a datos de gráficos con múltiples marcos de tiempo
12
10
  - **Reportes Financieros**: Acceder a datos financieros e informes de instrumentos
11
+ - **Detalles de Instrumentos**: Obtener perfiles y datos financieros detallados de instrumentos
13
12
 
14
13
  ## 📦 Instalación
15
14
 
@@ -84,8 +83,6 @@ const sdkManager = InfoselSdkManager.initWithConfiguration({
84
83
  const marketsSDK = InfoselMarkets.init({ sdkManager });
85
84
  ```
86
85
 
87
-
88
-
89
86
  ## 🔍 Validación de Configuración
90
87
 
91
88
  La nueva API incluye validaciones robustas:
@@ -141,44 +138,17 @@ const filteredResults = await marketsSDK.searchInstruments({
141
138
  console.log('Instrumentos encontrados:', searchResults);
142
139
  ```
143
140
 
144
- #### Obtener Lista de Instrumentos
145
-
146
- ```typescript
147
- const instruments = await marketsSDK.getInstruments({
148
- // Parámetros de paginación y filtros
149
- limit: 50,
150
- offset: 0,
151
- });
152
-
153
- console.log('Total de instrumentos:', instruments.total);
154
- console.log('Instrumentos:', instruments.instruments);
155
- ```
156
-
157
- #### Crear Instrumento Personalizado
141
+ #### Obtener Campos del Instrumento
158
142
 
159
143
  ```typescript
160
- const newInstrument = await marketsSDK.createInstrument({
161
- symbol: 'CUSTOM_STOCK',
162
- uniqueKey: 'CUSTOM_001',
163
- widgetId: 'widget-123',
164
- // Otros campos del instrumento
144
+ const fields = await marketsSDK.getInstrumentFields({
145
+ instrumentKey: '1/12576/0/AC*/AAPL',
146
+ useCache: true, // Opcional
165
147
  });
166
148
 
167
- console.log('Instrumento creado:', newInstrument);
168
- ```
169
-
170
- #### Eliminar Instrumento
171
-
172
- ```typescript
173
- const result = await marketsSDK.deleteInstrument('instrument-id-123');
174
- console.log('Resultado:', result); // Mensaje de confirmación
175
- ```
176
-
177
- #### Obtener Campos del Instrumento
178
-
179
- ```typescript
180
- const fields = await marketsSDK.getInstrumentFields('instrument-id-123');
181
- console.log('Campos disponibles:', fields);
149
+ console.log('Campos del instrumento:', fields);
150
+ console.log('Precio actual:', fields.precioActual);
151
+ console.log('Variación:', fields.variacion);
182
152
  ```
183
153
 
184
154
  ### 📊 Detalles Financieros de Instrumentos
@@ -187,7 +157,7 @@ console.log('Campos disponibles:', fields);
187
157
 
188
158
  ```typescript
189
159
  const profile = await marketsSDK.getInstrumentDetailProfile({
190
- instrumentId: 'AAPL_US',
160
+ instrumentKey: '1/12576/0/AC*/AAPL',
191
161
  });
192
162
 
193
163
  console.log('Perfil del instrumento:', profile);
@@ -197,8 +167,9 @@ console.log('Perfil del instrumento:', profile);
197
167
 
198
168
  ```typescript
199
169
  const quarterlyData = await marketsSDK.getInstrumentDetailFinancialQuartely({
200
- instrumentId: 'AAPL_US',
201
- period: 'QUARTERLY',
170
+ instrumentKey: '1/12576/0/AC*/AAPL',
171
+ exercise: '2023',
172
+ period: 4, // Q4
202
173
  });
203
174
 
204
175
  console.log('Datos trimestrales:', quarterlyData);
@@ -208,8 +179,9 @@ console.log('Datos trimestrales:', quarterlyData);
208
179
 
209
180
  ```typescript
210
181
  const annualData = await marketsSDK.getInstrumentDetailFinancialAnnual({
211
- instrumentId: 'AAPL_US',
212
- period: 'ANNUAL',
182
+ instrumentKey: '1/12576/0/AC*/AAPL',
183
+ exercise: '2023',
184
+ fields: 'revenue,profit,assets', // Opcional: campos específicos
213
185
  });
214
186
 
215
187
  console.log('Datos anuales:', annualData);
@@ -219,8 +191,9 @@ console.log('Datos anuales:', annualData);
219
191
 
220
192
  ```typescript
221
193
  const financialReasons = await marketsSDK.getInstrumentDetailFinancialReasons({
222
- instrumentId: 'AAPL_US',
223
- period: 'QUARTERLY',
194
+ instrumentKey: '1/12576/0/AC*/AAPL',
195
+ exercise: '2023',
196
+ period: 'Q4',
224
197
  });
225
198
 
226
199
  console.log('Razones financieras:', financialReasons);
@@ -230,171 +203,13 @@ console.log('Razones financieras:', financialReasons);
230
203
 
231
204
  ```typescript
232
205
  const reportReasons = await marketsSDK.getInstrumentReportFinancialReasons({
233
- instrumentId: 'AAPL_US',
234
- period: 'QUARTERLY',
206
+ instrumentKey: '1/12576/0/AC*/AAPL',
207
+ exercises: '2023,2022', // Opcional: múltiples ejercicios
235
208
  });
236
209
 
237
210
  console.log('Reporte con razones:', reportReasons);
238
211
  ```
239
212
 
240
- ### 🎯 Gestión de Widgets
241
-
242
- #### Crear Widget
243
-
244
- ```typescript
245
- // Widget de gráfico
246
- const chartWidget = await marketsSDK.createWidget({
247
- workspaceId: 'workspace-123',
248
- type: 'CHART',
249
- name: 'Gráfico de AAPL',
250
- instruments: [
251
- {
252
- uniqueKey: 'AAPL_US',
253
- symbol: 'AAPL',
254
- },
255
- ],
256
- });
257
-
258
- // Widget de tabla
259
- const tableWidget = await marketsSDK.createWidget({
260
- workspaceId: 'workspace-123',
261
- type: 'DYNAMIC_TABLE',
262
- name: 'Tabla de Precios',
263
- instruments: [
264
- {
265
- uniqueKey: 'AAPL_US',
266
- symbol: 'AAPL',
267
- },
268
- {
269
- uniqueKey: 'MSFT_US',
270
- symbol: 'MSFT',
271
- },
272
- ],
273
- });
274
-
275
- console.log('Widget creado:', chartWidget);
276
- ```
277
-
278
- #### Tipos de Widgets Disponibles
279
-
280
- ```typescript
281
- // Tipos soportados:
282
- // - 'DYNAMIC_TABLE': Tabla dinámica
283
- // - 'PREDEFINED_TABLE': Tabla predefinida
284
- // - 'CUSTOM_TABLE': Tabla personalizada
285
- // - 'NEWS_LIST': Lista de noticias
286
- // - 'TICKER_TAPE': Cinta de ticker
287
- // - 'CHART': Gráfico
288
- // - 'UNKNOWN': Tipo desconocido
289
- ```
290
-
291
- #### Actualizar Instrumentos del Widget
292
-
293
- ```typescript
294
- const updatedInstruments = await marketsSDK.updateWidgetInstruments({
295
- widgetId: 'widget-123',
296
- instruments: {
297
- keys: ['AAPL_US', 'MSFT_US', 'GOOGL_US'],
298
- },
299
- });
300
-
301
- console.log('Instrumentos actualizados:', updatedInstruments);
302
- ```
303
-
304
- #### Eliminar Widget
305
-
306
- ```typescript
307
- const result = await marketsSDK.deleteWidget('widget-123');
308
- console.log('Resultado:', result);
309
- ```
310
-
311
- #### Obtener Widgets del Proyecto
312
-
313
- ```typescript
314
- const projectWidgets = await marketsSDK.getProjectWidgets({
315
- projectId: 'project-123',
316
- });
317
-
318
- console.log('Widgets del proyecto:', projectWidgets);
319
- ```
320
-
321
- ### 🏢 Gestión de Espacios de Trabajo
322
-
323
- #### Crear Espacio de Trabajo
324
-
325
- ```typescript
326
- const workspace = await marketsSDK.createWorkspace({
327
- name: 'Mi Dashboard de Trading',
328
- description: 'Espacio de trabajo personal para análisis de mercado',
329
- userId: 'user-123', // Opcional: asociar a usuario específico
330
- projectId: 'project-123', // Opcional: asociar a proyecto específico
331
- });
332
-
333
- console.log('Espacio de trabajo creado:', workspace);
334
- ```
335
-
336
- #### Obtener Espacios de Trabajo
337
-
338
- ```typescript
339
- // Obtener todos los espacios de trabajo
340
- const allWorkspaces = await marketsSDK.getWorkspaces({
341
- projectId: 'project-123', // ID del proyecto requerido
342
- params: {
343
- instruments: {
344
- options: {
345
- limit: 100,
346
- offset: 0,
347
- sort: { field: 'name', direction: 'asc' }, // Ordenar por nombre ascendente
348
- },
349
- },
350
- },
351
- });
352
-
353
- // Obtener espacios de trabajo por usuario
354
- const userWorkspaces = await marketsSDK.getWorkspacesByUser({
355
- userId: 'user-123',
356
- params: {
357
- instruments: {
358
- options: {
359
- limit: 50,
360
- offset: 0,
361
- sort: { field: 'createdAt', direction: 'desc' }, // Ordenar por fecha de creación descendente
362
- },
363
- },
364
- },
365
- });
366
-
367
- // Obtener espacios de trabajo específicos del usuario
368
- const specificUserWorkspaces = await marketsSDK.getUserWorkspaces({
369
- connectionId: 'connection-123',
370
- });
371
-
372
- console.log('Espacios de trabajo:', allWorkspaces);
373
-
374
- **Nota importante**: Los métodos `getWorkspaces()` y `getWorkspacesByUser()` requieren un `projectId` o `userId` respectivamente, y los parámetros de paginación (`limit`, `offset`) y ordenamiento (`sort`) deben estar anidados dentro de `params.instruments.options`.
375
- ```
376
-
377
- #### Obtener Detalles del Espacio de Trabajo
378
-
379
- ```typescript
380
- const workspaceDetails = await marketsSDK.getWorkspace({
381
- workspaceId: 'workspace-123',
382
- });
383
-
384
- console.log('Detalles del workspace:', workspaceDetails);
385
- console.log('Widgets en el workspace:', workspaceDetails.widgets);
386
- ```
387
-
388
- #### Eliminar Espacio de Trabajo
389
-
390
- ```typescript
391
- const result = await marketsSDK.deleteWorkspace({
392
- id: 'workspace-123',
393
- });
394
-
395
- console.log('Resultado:', result);
396
- ```
397
-
398
213
  ### 📈 Datos de Gráficos
399
214
 
400
215
  #### Obtener Datos de Gráfico
@@ -402,7 +217,7 @@ console.log('Resultado:', result);
402
217
  ```typescript
403
218
  // Gráfico diario
404
219
  const dailyChart = await marketsSDK.getChartData({
405
- instrumentKey: 'AAPL_US',
220
+ instrumentKey: '1/12576/0/AC*/AAPL',
406
221
  period: {
407
222
  type: 'day',
408
223
  value: 1,
@@ -412,7 +227,7 @@ const dailyChart = await marketsSDK.getChartData({
412
227
 
413
228
  // Gráfico semanal
414
229
  const weeklyChart = await marketsSDK.getChartData({
415
- instrumentKey: 'AAPL_US',
230
+ instrumentKey: '1/12576/0/AC*/AAPL',
416
231
  period: {
417
232
  type: 'week',
418
233
  value: 4,
@@ -422,7 +237,7 @@ const weeklyChart = await marketsSDK.getChartData({
422
237
 
423
238
  // Gráfico mensual
424
239
  const monthlyChart = await marketsSDK.getChartData({
425
- instrumentKey: 'AAPL_US',
240
+ instrumentKey: '1/12576/0/AC*/AAPL',
426
241
  period: {
427
242
  type: 'month',
428
243
  value: 12,
@@ -446,13 +261,13 @@ console.log('Datos del gráfico diario:', dailyChart);
446
261
  const periods = {
447
262
  // 1 día con intervalos de 1 hora
448
263
  daily: { type: 'day', value: 1, interval: 1 },
449
-
264
+
450
265
  // 5 días con intervalos de 1 día
451
266
  week: { type: 'day', value: 5, interval: 1 },
452
-
267
+
453
268
  // 4 semanas con intervalos de 1 semana
454
269
  monthly: { type: 'week', value: 4, interval: 1 },
455
-
270
+
456
271
  // 12 meses con intervalos de 1 mes
457
272
  yearly: { type: 'month', value: 12, interval: 1 },
458
273
  };
@@ -491,57 +306,54 @@ class TradingDashboard {
491
306
  this.marketsSDK = InfoselMarkets.init({ sdkManager });
492
307
  }
493
308
 
494
- // Crear dashboard completo
495
- async createCompleteDashboard(userId: string) {
309
+ // Obtener datos completos de un instrumento
310
+ async getCompleteInstrumentData(instrumentKey: string) {
496
311
  try {
497
- // 1. Crear espacio de trabajo
498
- const workspace = await this.marketsSDK.createWorkspace({
499
- name: 'Dashboard de Trading',
500
- description: 'Dashboard completo para análisis de mercado',
501
- userId,
502
- // Nota: userId y projectId son mutuamente excluyentes
503
- // Si se proporciona userId, no se debe incluir projectId
504
- });
505
-
506
- // 2. Crear widget de gráfico para AAPL
507
- const chartWidget = await this.marketsSDK.createWidget({
508
- workspaceId: workspace.id,
509
- type: 'CHART',
510
- name: 'Gráfico AAPL',
511
- instruments: [{ uniqueKey: 'AAPL_US', symbol: 'AAPL' }],
312
+ // 1. Obtener campos del instrumento
313
+ const fields = await this.marketsSDK.getInstrumentFields({
314
+ instrumentKey,
512
315
  });
513
316
 
514
- // 3. Crear widget de tabla para múltiples instrumentos
515
- const tableWidget = await this.marketsSDK.createWidget({
516
- workspaceId: workspace.id,
517
- type: 'DYNAMIC_TABLE',
518
- name: 'Portafolio',
519
- instruments: [
520
- { uniqueKey: 'AAPL_US', symbol: 'AAPL' },
521
- { uniqueKey: 'MSFT_US', symbol: 'MSFT' },
522
- { uniqueKey: 'GOOGL_US', symbol: 'GOOGL' },
523
- ],
524
- });
525
-
526
- // 4. Obtener datos del gráfico
317
+ // 2. Obtener datos del gráfico
527
318
  const chartData = await this.marketsSDK.getChartData({
528
- instrumentKey: 'AAPL_US',
319
+ instrumentKey,
529
320
  period: { type: 'day', value: 30, interval: 1 },
530
321
  });
531
322
 
532
- // 5. Obtener perfil del instrumento
323
+ // 3. Obtener perfil del instrumento
533
324
  const profile = await this.marketsSDK.getInstrumentDetailProfile({
534
- instrumentId: 'AAPL_US',
325
+ instrumentKey,
535
326
  });
536
327
 
328
+ // 4. Obtener datos financieros
329
+ const [quarterly, annual, financialReasons] = await Promise.all([
330
+ this.marketsSDK.getInstrumentDetailFinancialQuartely({
331
+ instrumentKey,
332
+ exercise: '2023',
333
+ period: 4,
334
+ }),
335
+ this.marketsSDK.getInstrumentDetailFinancialAnnual({
336
+ instrumentKey,
337
+ exercise: '2023',
338
+ fields: 'revenue,profit',
339
+ }),
340
+ this.marketsSDK.getInstrumentDetailFinancialReasons({
341
+ instrumentKey,
342
+ exercise: '2023',
343
+ period: 'Q4',
344
+ }),
345
+ ]);
346
+
537
347
  return {
538
- workspace,
539
- widgets: [chartWidget, tableWidget],
348
+ fields,
540
349
  chartData,
541
350
  profile,
351
+ quarterly,
352
+ annual,
353
+ financialReasons,
542
354
  };
543
355
  } catch (error) {
544
- console.error('Error creando dashboard:', error);
356
+ console.error('Error obteniendo datos del instrumento:', error);
545
357
  throw error;
546
358
  }
547
359
  }
@@ -561,19 +373,21 @@ class TradingDashboard {
561
373
  }
562
374
 
563
375
  // Obtener datos financieros
564
- async getFinancialData(instrumentId: string) {
376
+ async getFinancialData(instrumentKey: string) {
565
377
  try {
566
378
  const [quarterly, annual, profile] = await Promise.all([
567
379
  this.marketsSDK.getInstrumentDetailFinancialQuartely({
568
- instrumentId,
569
- period: 'QUARTERLY',
380
+ instrumentKey,
381
+ exercise: '2023',
382
+ period: 4,
570
383
  }),
571
384
  this.marketsSDK.getInstrumentDetailFinancialAnnual({
572
- instrumentId,
573
- period: 'ANNUAL',
385
+ instrumentKey,
386
+ exercise: '2023',
387
+ fields: 'revenue,profit',
574
388
  }),
575
389
  this.marketsSDK.getInstrumentDetailProfile({
576
- instrumentId,
390
+ instrumentKey,
577
391
  }),
578
392
  ]);
579
393
 
@@ -588,18 +402,22 @@ class TradingDashboard {
588
402
  // Uso del dashboard
589
403
  async function main() {
590
404
  const dashboard = new TradingDashboard();
591
-
405
+
592
406
  try {
593
- // Crear dashboard completo
594
- const result = await dashboard.createCompleteDashboard('user-123');
595
- console.log('Dashboard creado:', result);
407
+ // Obtener datos completos de un instrumento
408
+ const instrumentData = await dashboard.getCompleteInstrumentData(
409
+ '1/12576/0/AC*/AAPL',
410
+ );
411
+ console.log('Datos del instrumento:', instrumentData);
596
412
 
597
413
  // Buscar instrumentos
598
414
  const searchResults = await dashboard.searchInstruments('TECH', 5);
599
415
  console.log('Resultados de búsqueda:', searchResults);
600
416
 
601
417
  // Obtener datos financieros
602
- const financialData = await dashboard.getFinancialData('AAPL_US');
418
+ const financialData = await dashboard.getFinancialData(
419
+ '1/12576/0/AC*/AAPL',
420
+ );
603
421
  console.log('Datos financieros:', financialData);
604
422
  } catch (error) {
605
423
  console.error('Error en main:', error);
@@ -623,8 +441,8 @@ class AdvancedInstrumentSearch {
623
441
  async searchWithFilters(options: {
624
442
  query: string;
625
443
  marketTypes?: number[]; // Tipos de mercado (ej: [1, 2] para Acciones y Bonos)
626
- valueTypes?: number[]; // Tipos de valor (ej: [1] para Equity)
627
- exchanges?: number[]; // Exchanges (ej: [1, 2] para NYSE y NASDAQ)
444
+ valueTypes?: number[]; // Tipos de valor (ej: [1] para Equity)
445
+ exchanges?: number[]; // Exchanges (ej: [1, 2] para NYSE y NASDAQ)
628
446
  limit?: number;
629
447
  }) {
630
448
  try {
@@ -674,113 +492,6 @@ const nasdaqStocks = await searchSystem.searchByExchange('NASDAQ');
674
492
  console.log('Acciones del NASDAQ:', nasdaqStocks);
675
493
  ```
676
494
 
677
- ### 📊 Gestor de Widgets
678
-
679
- ```typescript
680
- class WidgetManager {
681
- private marketsSDK: InfoselMarkets;
682
-
683
- constructor(marketsSDK: InfoselMarkets) {
684
- this.marketsSDK = marketsSDK;
685
- }
686
-
687
- // Crear widget de gráfico
688
- async createChartWidget(workspaceId: string, instrument: string, name: string) {
689
- try {
690
- const widget = await this.marketsSDK.createWidget({
691
- workspaceId,
692
- type: 'CHART',
693
- name,
694
- instruments: [{ uniqueKey: instrument, symbol: instrument }],
695
- });
696
-
697
- return widget;
698
- } catch (error) {
699
- console.error('Error creando widget de gráfico:', error);
700
- throw error;
701
- }
702
- }
703
-
704
- // Crear widget de tabla
705
- async createTableWidget(
706
- workspaceId: string,
707
- instruments: string[],
708
- name: string
709
- ) {
710
- try {
711
- const widget = await this.marketsSDK.createWidget({
712
- workspaceId,
713
- type: 'DYNAMIC_TABLE',
714
- name,
715
- instruments: instruments.map(instrument => ({
716
- uniqueKey: instrument,
717
- symbol: instrument,
718
- })),
719
- });
720
-
721
- return widget;
722
- } catch (error) {
723
- console.error('Error creando widget de tabla:', error);
724
- throw error;
725
- }
726
- }
727
-
728
- // Actualizar instrumentos de un widget
729
- async updateWidgetInstruments(widgetId: string, instruments: string[]) {
730
- try {
731
- const updatedInstruments = await this.marketsSDK.updateWidgetInstruments({
732
- widgetId,
733
- instruments: { keys: instruments },
734
- });
735
-
736
- return updatedInstruments;
737
- } catch (error) {
738
- console.error('Error actualizando instrumentos:', error);
739
- throw error;
740
- }
741
- }
742
-
743
- // Eliminar widget
744
- async deleteWidget(widgetId: string) {
745
- try {
746
- const result = await this.marketsSDK.deleteWidget(widgetId);
747
- return result;
748
- } catch (error) {
749
- console.error('Error eliminando widget:', error);
750
- throw error;
751
- }
752
- }
753
- }
754
-
755
- // Uso del gestor de widgets
756
- const widgetManager = new WidgetManager(marketsSDK);
757
-
758
- // Crear widgets en un workspace
759
- async function setupWorkspaceWidgets(workspaceId: string) {
760
- try {
761
- // Widget de gráfico para AAPL
762
- const chartWidget = await widgetManager.createChartWidget(
763
- workspaceId,
764
- 'AAPL_US',
765
- 'Gráfico de Apple'
766
- );
767
-
768
- // Widget de tabla para portafolio
769
- const tableWidget = await widgetManager.createTableWidget(
770
- workspaceId,
771
- ['AAPL_US', 'MSFT_US', 'GOOGL_US'],
772
- 'Portafolio Principal'
773
- );
774
-
775
- console.log('Widgets creados:', { chartWidget, tableWidget });
776
- return { chartWidget, tableWidget };
777
- } catch (error) {
778
- console.error('Error configurando widgets:', error);
779
- throw error;
780
- }
781
- }
782
- ```
783
-
784
495
  ## 📚 Referencia de API
785
496
 
786
497
  ### Clases Principales
@@ -803,77 +514,53 @@ Mapeador de datos para convertir entre modelos de API y dominio.
803
514
 
804
515
  ### Métodos Disponibles
805
516
 
806
- #### 🔍 Gestión de Instrumentos
517
+ #### 🔍 Búsqueda y Campos de Instrumentos
807
518
 
808
- | Método | Descripción | Parámetros |
809
- |--------|-------------|------------|
810
- | `searchInstruments()` | Buscar instrumentos financieros | `SearchInstrumentRequest` |
811
- | `getInstruments()` | Obtener lista de instrumentos | `GetInstrumentsRequest` |
812
- | `createInstrument()` | Crear nuevo instrumento | `CreateInstrumentRequest` |
813
- | `deleteInstrument()` | Eliminar instrumento | `string` (ID) |
814
- | `getInstrumentFields()` | Obtener campos del instrumento | `string` (ID) |
519
+ | Método | Descripción | Parámetros |
520
+ | ------------------------------- | ---------------------------------------- | ------------------------- |
521
+ | `searchInstruments()` | Buscar instrumentos financieros | `SearchInstrumentRequest` |
522
+ | `getInstrumentFields()` | Obtener campos del instrumento | `GetLastRequest` |
523
+ | `getInstrumentMultipleFields()` | Obtener campos de múltiples instrumentos | `GetLastRequest` |
815
524
 
816
525
  #### 📊 Detalles de Instrumentos
817
526
 
818
- | Método | Descripción | Parámetros |
819
- |--------|-------------|------------|
820
- | `getInstrumentDetailProfile()` | Obtener perfil del instrumento | `InstrumentDetailProfileRequest` |
821
- | `getInstrumentDetailFinancialQuartely()` | Datos financieros trimestrales | `InstrumentDetailFinancialQuarterlyRequest` |
822
- | `getInstrumentDetailFinancialAnnual()` | Datos financieros anuales | `InstrumentDetailFinancialAnnualRequest` |
823
- | `getInstrumentDetailFinancialReasons()` | Razones financieras | `InstrumentDetailFinancialReasonsRequest` |
824
- | `getInstrumentReportFinancialReasons()` | Reportes financieros con razones | `InstrumentReportFinancialReasonsRequest` |
825
-
826
- #### 🎯 Gestión de Widgets
827
-
828
- | Método | Descripción | Parámetros |
829
- |--------|-------------|------------|
830
- | `createWidget()` | Crear nuevo widget | `CreateWidgetRequest` |
831
- | `deleteWidget()` | Eliminar widget | `string` (ID) |
832
- | `updateWidgetInstruments()` | Actualizar instrumentos del widget | `UpdateWidgetInstrumentsRequest` |
833
- | `getProjectWidgets()` | Obtener widgets del proyecto | `GetProjectWidgetsRequest` |
834
-
835
- #### 🏢 Gestión de Espacios de Trabajo
836
-
837
- | Método | Descripción | Parámetros |
838
- |--------|-------------|------------|
839
- | `createWorkspace()` | Crear nuevo espacio de trabajo | `CreateWorkspaceRequest` |
840
- | `getWorkspaces()` | Obtener espacios de trabajo | `GetWorkspacesRequest` |
841
- | `getWorkspacesByUser()` | Obtener espacios de trabajo del usuario | `GetWorkspacesByUserRequest` |
842
- | `getUserWorkspaces()` | Obtener espacios de trabajo específicos del usuario | `GetUserWorkspaceRequest` |
843
- | `getWorkspace()` | Obtener detalles del workspace | `GetWorkspaceRequest` |
844
- | `deleteWorkspace()` | Eliminar espacio de trabajo | `DeleteWorkspaceRequest` |
527
+ | Método | Descripción | Parámetros |
528
+ | ---------------------------------------- | -------------------------------- | ------------------------------------------- |
529
+ | `getInstrumentDetailProfile()` | Obtener perfil del instrumento | `InstrumentDetailProfileRequest` |
530
+ | `getInstrumentDetailFinancialQuartely()` | Datos financieros trimestrales | `InstrumentDetailFinancialQuarterlyRequest` |
531
+ | `getInstrumentDetailFinancialAnnual()` | Datos financieros anuales | `InstrumentDetailFinancialAnnualRequest` |
532
+ | `getInstrumentDetailFinancialReasons()` | Razones financieras | `InstrumentDetailFinancialReasonsRequest` |
533
+ | `getInstrumentReportFinancialReasons()` | Reportes financieros con razones | `InstrumentReportFinancialReasonsRequest` |
845
534
 
846
535
  #### 📈 Datos de Gráficos
847
536
 
848
- | Método | Descripción | Parámetros |
849
- |--------|-------------|------------|
537
+ | Método | Descripción | Parámetros |
538
+ | ---------------- | ------------------------- | -------------- |
850
539
  | `getChartData()` | Obtener datos de gráficos | `ChartRequest` |
851
540
 
852
541
  ### Entidades
853
542
 
854
543
  #### Entidades Principales
855
544
 
856
- - `Instrument`: Representación de instrumento financiero
857
- - `Widget`: Configuración y datos del widget
858
- - `Workspace`: Espacio de trabajo del usuario
545
+ - `Instrument`: Representación básica de instrumento financiero (instrumentKey, symbol)
546
+ - `InstrumentFields`: Campos completos de mercado de un instrumento
859
547
  - `ChartItem`: Punto de datos del gráfico
860
548
  - `SearchResultItem`: Elemento de resultado de búsqueda
549
+ - `InstrumentDetailProfile`: Perfil detallado del instrumento
550
+ - `InstrumentDetailFinancial`: Datos financieros del instrumento
551
+ - `InstrumentDetailFinancialReasons`: Razones financieras del instrumento
552
+ - `InstrumentReportFinancialReasons`: Reporte financiero con razones
861
553
 
862
554
  #### Entidades de Solicitud/Respuesta
863
555
 
864
- - `SearchInstrumentsRequest`: Parámetros de búsqueda
865
- - `CreateWidgetRequest`: Parámetros de creación de widget
866
- - `CreateWorkspaceRequest`: Parámetros de creación de espacio de trabajo
556
+ - `SearchInstrumentsRequest`: Parámetros de búsqueda de instrumentos
557
+ - `GetLastRequest`: Parámetros para obtener campos de instrumento
867
558
  - `ChartRequest`: Parámetros de solicitud de datos de gráfico
868
-
869
- #### Tipos de Widgets
870
-
871
- - `DYNAMIC_TABLE`: Tabla dinámica con datos en tiempo real
872
- - `PREDEFINED_TABLE`: Tabla predefinida con estructura fija
873
- - `CUSTOM_TABLE`: Tabla personalizable
874
- - `NEWS_LIST`: Lista de noticias financieras
875
- - `TICKER_TAPE`: Cinta de ticker con precios
876
- - `CHART`: Gráfico de precios y volúmenes
559
+ - `InstrumentDetailProfileRequest`: Parámetros para obtener perfil
560
+ - `InstrumentDetailFinancialAnnualRequest`: Parámetros para datos anuales
561
+ - `InstrumentDetailFinancialQuarterlyRequest`: Parámetros para datos trimestrales
562
+ - `InstrumentDetailFinancialReasonsRequest`: Parámetros para razones financieras
563
+ - `InstrumentReportFinancialReasonsRequest`: Parámetros para reporte financiero
877
564
 
878
565
  #### Tipos de Períodos de Gráficos
879
566
 
@@ -969,7 +656,8 @@ El script `run-e2e.sh` proporciona una interfaz fácil para ejecutar pruebas e2e
969
656
 
970
657
  - **SDK Core Configuration**: Verificación de inicialización y autenticación
971
658
  - **Markets API Integration**: Conexión real a la API de markets
972
- - **Workspace Operations**: Operaciones de workspace con datos reales
659
+ - **Instrument Search**: Búsqueda de instrumentos con datos reales
660
+ - **Instrument Fields**: Obtención de campos de instrumentos
973
661
  - **Performance and Reliability**: Verificación de tiempos de respuesta y concurrencia
974
662
 
975
663
  #### Notas Importantes
@@ -982,7 +670,6 @@ El script `run-e2e.sh` proporciona una interfaz fácil para ejecutar pruebas e2e
982
670
 
983
671
  Para más detalles, consulta el [README de pruebas e2e](src/__tests__/e2e/README.md).
984
672
 
985
-
986
673
  ## 📞 Soporte
987
674
 
988
675
  Para soporte y preguntas, por favor contacta al equipo de desarrollo de Infosel.
@@ -990,6 +677,7 @@ Para soporte y preguntas, por favor contacta al equipo de desarrollo de Infosel.
990
677
  ## 🔗 Paquetes Relacionados
991
678
 
992
679
  - `@infosel-sdk/core`: Funcionalidad core del SDK (versión ^0.0.4)
680
+ - `@infosel-sdk/widgets`: SDK de widgets y espacios de trabajo (versión ^1.0.0)
993
681
  - `@infosel-sdk/news`: SDK de noticias y contenido
994
682
  - `@infosel-sdk/securities`: SDK de valores y trading
995
683