@stack-spot/portal-network 0.199.0-beta.1 → 0.200.0-beta.1

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 (94) hide show
  1. package/CHANGELOG.md +55 -1
  2. package/dist/api/account.d.ts +331 -89
  3. package/dist/api/account.d.ts.map +1 -1
  4. package/dist/api/account.js +203 -46
  5. package/dist/api/account.js.map +1 -1
  6. package/dist/api/accountAssetManager.d.ts +279 -0
  7. package/dist/api/accountAssetManager.d.ts.map +1 -0
  8. package/dist/api/accountAssetManager.js +167 -0
  9. package/dist/api/accountAssetManager.js.map +1 -0
  10. package/dist/api/agent-tools.d.ts +2 -0
  11. package/dist/api/agent-tools.d.ts.map +1 -1
  12. package/dist/api/agent-tools.js.map +1 -1
  13. package/dist/api/ai.d.ts +2 -3
  14. package/dist/api/ai.d.ts.map +1 -1
  15. package/dist/api/ai.js.map +1 -1
  16. package/dist/api/discover.d.ts +9 -6
  17. package/dist/api/discover.d.ts.map +1 -1
  18. package/dist/api/discover.js +5 -5
  19. package/dist/api/discover.js.map +1 -1
  20. package/dist/api/edpBfa.d.ts +215 -0
  21. package/dist/api/edpBfa.d.ts.map +1 -0
  22. package/dist/api/edpBfa.js +87 -0
  23. package/dist/api/edpBfa.js.map +1 -0
  24. package/dist/api-addresses.d.ts +11 -20
  25. package/dist/api-addresses.d.ts.map +1 -1
  26. package/dist/api-addresses.js +31 -17
  27. package/dist/api-addresses.js.map +1 -1
  28. package/dist/apis-itau.json +16 -0
  29. package/dist/apis.json +16 -0
  30. package/dist/client/account-asset-manager.d.ts +110 -0
  31. package/dist/client/account-asset-manager.d.ts.map +1 -0
  32. package/dist/client/account-asset-manager.js +160 -0
  33. package/dist/client/account-asset-manager.js.map +1 -0
  34. package/dist/client/account.d.ts +11 -9
  35. package/dist/client/account.d.ts.map +1 -1
  36. package/dist/client/account.js +11 -8
  37. package/dist/client/account.js.map +1 -1
  38. package/dist/client/agent-tools.d.ts +2 -2
  39. package/dist/client/agent-tools.d.ts.map +1 -1
  40. package/dist/client/agent-tools.js +2 -1
  41. package/dist/client/agent-tools.js.map +1 -1
  42. package/dist/client/ai.d.ts +24 -1
  43. package/dist/client/ai.d.ts.map +1 -1
  44. package/dist/client/ai.js +19 -1
  45. package/dist/client/ai.js.map +1 -1
  46. package/dist/client/data-integration.d.ts.map +1 -1
  47. package/dist/client/data-integration.js +8 -1
  48. package/dist/client/data-integration.js.map +1 -1
  49. package/dist/client/discover.d.ts +2 -2
  50. package/dist/client/discover.d.ts.map +1 -1
  51. package/dist/client/discover.js.map +1 -1
  52. package/dist/client/edp-bfa.d.ts +16 -0
  53. package/dist/client/edp-bfa.d.ts.map +1 -0
  54. package/dist/client/edp-bfa.js +24 -0
  55. package/dist/client/edp-bfa.js.map +1 -0
  56. package/dist/client/notification.d.ts +7 -0
  57. package/dist/client/notification.d.ts.map +1 -1
  58. package/dist/client/notification.js +10 -1
  59. package/dist/client/notification.js.map +1 -1
  60. package/dist/client/workspace-manager.d.ts +15 -0
  61. package/dist/client/workspace-manager.d.ts.map +1 -1
  62. package/dist/client/workspace-manager.js +19 -1
  63. package/dist/client/workspace-manager.js.map +1 -1
  64. package/dist/error/dictionary/accountAssetManager.d.ts +11 -0
  65. package/dist/error/dictionary/accountAssetManager.d.ts.map +1 -0
  66. package/dist/error/dictionary/accountAssetManager.js +11 -0
  67. package/dist/error/dictionary/accountAssetManager.js.map +1 -0
  68. package/dist/index.d.ts +3 -1
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +3 -1
  71. package/dist/index.js.map +1 -1
  72. package/dist/network/NetworkClient.js.map +1 -1
  73. package/package.json +1 -1
  74. package/src/api/account.ts +579 -163
  75. package/src/api/accountAssetManager.ts +655 -0
  76. package/src/api/agent-tools.ts +2 -0
  77. package/src/api/ai.ts +2 -3
  78. package/src/api/discover.ts +10 -10
  79. package/src/api/edpBfa.ts +472 -0
  80. package/src/api-addresses.ts +56 -37
  81. package/src/apis-itau.json +16 -0
  82. package/src/apis.json +16 -0
  83. package/src/client/account-asset-manager.ts +100 -0
  84. package/src/client/account.ts +11 -7
  85. package/src/client/agent-tools.ts +2 -1
  86. package/src/client/ai.ts +10 -0
  87. package/src/client/data-integration.ts +9 -2
  88. package/src/client/discover.ts +2 -2
  89. package/src/client/edp-bfa.ts +24 -0
  90. package/src/client/notification.ts +6 -1
  91. package/src/client/workspace-manager.ts +13 -0
  92. package/src/error/dictionary/accountAssetManager.ts +12 -0
  93. package/src/index.ts +4 -1
  94. package/src/network/NetworkClient.ts +1 -1
@@ -151,7 +151,7 @@ export type InsightResponseInsightData = {
151
151
  title: string;
152
152
  summary: string;
153
153
  badge: string;
154
- chartUrl: string;
154
+ chartUrl?: string;
155
155
  };
156
156
  export type InsightResponse = {
157
157
  insights: InsightResponseInsightData[];
@@ -192,7 +192,7 @@ export type CreateDocumentResponse = {
192
192
  updatedAt?: string;
193
193
  chatId: string;
194
194
  };
195
- export type MessageRequest = {
195
+ export type AiChatRequest = {
196
196
  prompt: string;
197
197
  conversationId: string;
198
198
  };
@@ -216,8 +216,9 @@ export type AdminAgentResponse = {
216
216
  export type GetInsightResponse = {
217
217
  id: string;
218
218
  title: string;
219
+ summary: string;
219
220
  content: string;
220
- chartUrl: string;
221
+ chartUrl?: string;
221
222
  };
222
223
  export type GetArtifactResponse = {
223
224
  "type": "OPPORTUNITY" | "HYPOTHESIS" | "DOCUMENT";
@@ -470,9 +471,11 @@ export function create2({ createDocumentRequest }: {
470
471
  body: createDocumentRequest
471
472
  })));
472
473
  }
473
- export function chat({ authorization, messageRequest }: {
474
- authorization: string;
475
- messageRequest: MessageRequest;
474
+ /**
475
+ * Send a message to AI chat
476
+ */
477
+ export function chat({ aiChatRequest }: {
478
+ aiChatRequest: AiChatRequest;
476
479
  }, opts?: Oazapfts.RequestOpts) {
477
480
  return oazapfts.ok(oazapfts.fetchJson<{
478
481
  status: 200;
@@ -480,10 +483,7 @@ export function chat({ authorization, messageRequest }: {
480
483
  }>("/v2/ai/chat", oazapfts.json({
481
484
  ...opts,
482
485
  method: "POST",
483
- body: messageRequest,
484
- headers: oazapfts.mergeHeaders(opts?.headers, {
485
- Authorization: authorization
486
- })
486
+ body: aiChatRequest
487
487
  })));
488
488
  }
489
489
  export function createAgent({ adminAgentCreateRequest }: {
@@ -0,0 +1,472 @@
1
+ /**
2
+ * EDP Backend for Agent
3
+ * 0.0.1
4
+ * DO NOT MODIFY - This file has been generated using oazapfts.
5
+ * See https://www.npmjs.com/package/oazapfts
6
+ */
7
+ import * as Oazapfts from "@oazapfts/runtime";
8
+ import * as QS from "@oazapfts/runtime/query";
9
+ export const defaults: Oazapfts.Defaults<Oazapfts.CustomHeaders> = {
10
+ headers: {},
11
+ baseUrl: "https://adp-development-edp-bfa.prd.stackspot.com",
12
+ };
13
+ const oazapfts = Oazapfts.runtime(defaults);
14
+ export const servers = {
15
+ generatedServerUrl: "https://adp-development-edp-bfa.prd.stackspot.com"
16
+ };
17
+ export type WorkflowExecutionRequestV2 = {
18
+ /** Nome do app/infra a ser criado */
19
+ name: string;
20
+ /** Descrição do app/infra a ser criado */
21
+ description: string;
22
+ /** Valores dos inputs definidos pelo workflow */
23
+ inputs: string;
24
+ };
25
+ export type CreateWorkflowExecutionResponse = {
26
+ /** ID da execução. Use esse id para obter o status da execução do workflow. */
27
+ executionId: string;
28
+ /** ID do app/infra criado no portal do EDP */
29
+ targetId: string;
30
+ /** URL para acompanhamento da execução do workflow no portal do EDP. */
31
+ portalUrl: string;
32
+ };
33
+ export type ErrorDetail = {
34
+ status: string;
35
+ code: string;
36
+ details: string;
37
+ };
38
+ export type ValidationDetail = {
39
+ code: string;
40
+ values: string[];
41
+ };
42
+ export type ErrorBody = {
43
+ code: string;
44
+ details: string;
45
+ status: string;
46
+ validationDetails?: ValidationDetail[];
47
+ };
48
+ export type SpecWorkflowInputs = {
49
+ /** Caminho do repositório */
50
+ repositoryPath: string;
51
+ /** Branch de origem */
52
+ sourceBranch?: string;
53
+ /** Branch de destino */
54
+ targetBranch?: string;
55
+ /** Constitution */
56
+ constitution: string;
57
+ /** Functional */
58
+ functional: string;
59
+ /** Technical */
60
+ technical: string;
61
+ };
62
+ export type WorkflowSpecExecutionRequest = {
63
+ /** Valores dos inputs definidos pelo workflow no formato string */
64
+ inputs: SpecWorkflowInputs;
65
+ };
66
+ export type WorkflowExecutionStatus = {
67
+ /** ID da execução */
68
+ executionId: string;
69
+ /** Status da execução */
70
+ status: "pending" | "in_progress" | "completed" | "suspended";
71
+ /** Data/hora de início */
72
+ startedAt?: string;
73
+ /** Data/hora de término */
74
+ endedAt?: string;
75
+ /** Resultado final da execução */
76
+ conclusion?: "error" | "success" | "skipped" | "cancelled";
77
+ /** URL para acompanhamento da execução do workflow no portal do EDP. */
78
+ webUrl?: string;
79
+ };
80
+ export type CodeWorkflowInputs = {
81
+ /** Caminho do repositório */
82
+ repositoryPath: string;
83
+ /** Branch de origem */
84
+ sourceBranch?: string;
85
+ /** Branch de destino */
86
+ targetBranch?: string;
87
+ };
88
+ export type WorkflowCodeExecutionRequest = {
89
+ /** Valores dos inputs definidos pelo workflow no formato string */
90
+ inputs: CodeWorkflowInputs;
91
+ };
92
+ export type Workspace = {
93
+ /** ID do workspace */
94
+ id: string;
95
+ /** Nome do workspace */
96
+ name: string;
97
+ /** Descrição do workspace */
98
+ description: string;
99
+ };
100
+ export type WorkspacesPage = {
101
+ /** Lista de resultados */
102
+ items: Workspace[];
103
+ /** Número da página */
104
+ page: number;
105
+ /** Quantidade de itens por página */
106
+ pageSize: number;
107
+ /** Indica se é a última página */
108
+ isLastPage: boolean;
109
+ };
110
+ export type Value = {
111
+ /** Valor do input. Pode ser string, número, booleano, etc. */
112
+ value: any;
113
+ /** Indica se o valor é mandatório. Se for o valor não poderá ser alterado, então não adianta perguntá-lo ao usuário. Se não for mandatório é uma sugestão de valor inicial que poderá ser alterada. */
114
+ mandatory: boolean;
115
+ };
116
+ export type EnvValue = {
117
+ /** Nome do ambiente (ex: dev, prod). Se não informado, é valor padrão. */
118
+ env?: string;
119
+ /** Indica o valor atual e se é mandatório para o ambiente. */
120
+ value: Value;
121
+ };
122
+ export type Condition = {
123
+ /** Nome da variável a ser avaliada na condição. */
124
+ variable?: string;
125
+ /** Operador lógico da condição (ex: ==, !=, >, <). */
126
+ operator?: string;
127
+ /** Valor esperado para a condição ser verdadeira. */
128
+ value?: string;
129
+ };
130
+ export type WorkflowInput = {
131
+ /** Nome do input */
132
+ name?: string;
133
+ /** Descrição do input */
134
+ label: string;
135
+ /** Tipo do input */
136
+ "type": "text" | "bool" | "int" | "select" | "multiselect" | "list" | "object";
137
+ /** Lista de opções para campos dos tipos select e multiselect. */
138
+ items?: string[];
139
+ /** Se true ou não presente, o campo é obrigatório, caso contrário opcional. */
140
+ required?: boolean;
141
+ /** Expressão regular para validação do valor do input (usado em campos do tipo text). */
142
+ pattern?: string;
143
+ /** Dica ou instrução adicional para o usuário */
144
+ help?: string;
145
+ /** Valores do input por ambiente, incluindo se é mandatório. */
146
+ values?: EnvValue[];
147
+ /** Pergunta exibida ao usuário para adicionar novos itens em campos do tipo lista. */
148
+ addQuestion?: string;
149
+ /** Definição do schema para cada item de uma lista (usado em campos do tipo list). */
150
+ input?: any;
151
+ /** Lista de inputs agrupados (usado em campos do tipo object). */
152
+ inputs?: any;
153
+ /** Condição para exibir ou habilitar o input, baseada em outros valores. */
154
+ condition?: Condition;
155
+ /** Escopo do input (ex: default, hidden, env, deploy). */
156
+ scope?: string;
157
+ };
158
+ export type Workflow = {
159
+ /** ID do workflow */
160
+ id: string;
161
+ /** Nome do workflow */
162
+ name: string;
163
+ /** Descrição do workflow */
164
+ description: string;
165
+ /** Inputs do workflow */
166
+ inputs: WorkflowInput[];
167
+ };
168
+ export type WorkflowList = {
169
+ /** Lista de workflows */
170
+ items: Workflow[];
171
+ };
172
+ /**
173
+ * Dispara a execução de um workflow em um workspace
174
+ */
175
+ export function executeWorkflow({ workspaceId, workflowId, workflowExecutionRequestV2 }: {
176
+ workspaceId: string;
177
+ workflowId: string;
178
+ workflowExecutionRequestV2: WorkflowExecutionRequestV2;
179
+ }, opts?: Oazapfts.RequestOpts) {
180
+ return oazapfts.ok(oazapfts.fetchJson<{
181
+ status: 201;
182
+ data: CreateWorkflowExecutionResponse;
183
+ } | {
184
+ status: 400;
185
+ data: ErrorDetail;
186
+ } | {
187
+ status: 401;
188
+ data: ErrorDetail;
189
+ } | {
190
+ status: 403;
191
+ data: ErrorDetail;
192
+ } | {
193
+ status: 404;
194
+ data: ErrorDetail;
195
+ } | {
196
+ status: 409;
197
+ data: ErrorBody;
198
+ } | {
199
+ status: 422;
200
+ data: ErrorBody;
201
+ } | {
202
+ status: 500;
203
+ data: ErrorDetail;
204
+ } | {
205
+ status: 503;
206
+ data: ErrorBody;
207
+ }>(`/v2/workspaces/${encodeURIComponent(workspaceId)}/workflows/${encodeURIComponent(workflowId)}/executions`, oazapfts.json({
208
+ ...opts,
209
+ method: "POST",
210
+ body: workflowExecutionRequestV2
211
+ })));
212
+ }
213
+ /**
214
+ * Dispara a execução de um workflow do tipo spec
215
+ */
216
+ export function executeSpecWorkflow({ workflowSpecExecutionRequest }: {
217
+ workflowSpecExecutionRequest: WorkflowSpecExecutionRequest;
218
+ }, opts?: Oazapfts.RequestOpts) {
219
+ return oazapfts.ok(oazapfts.fetchJson<{
220
+ status: 200;
221
+ data: WorkflowExecutionStatus;
222
+ } | {
223
+ status: 400;
224
+ data: ErrorDetail;
225
+ } | {
226
+ status: 401;
227
+ data: ErrorDetail;
228
+ } | {
229
+ status: 403;
230
+ data: ErrorDetail;
231
+ } | {
232
+ status: 404;
233
+ data: ErrorDetail;
234
+ } | {
235
+ status: 409;
236
+ data: ErrorBody;
237
+ } | {
238
+ status: 422;
239
+ data: ErrorBody;
240
+ } | {
241
+ status: 500;
242
+ data: ErrorDetail;
243
+ } | {
244
+ status: 503;
245
+ data: ErrorBody;
246
+ }>("/v1/workflows/executions/spec", oazapfts.json({
247
+ ...opts,
248
+ method: "POST",
249
+ body: workflowSpecExecutionRequest
250
+ })));
251
+ }
252
+ /**
253
+ * Dispara a execução de um workflow de geração de código
254
+ */
255
+ export function executeCodeWorkflow({ workflowCodeExecutionRequest }: {
256
+ workflowCodeExecutionRequest: WorkflowCodeExecutionRequest;
257
+ }, opts?: Oazapfts.RequestOpts) {
258
+ return oazapfts.ok(oazapfts.fetchJson<{
259
+ status: 200;
260
+ data: WorkflowExecutionStatus;
261
+ } | {
262
+ status: 400;
263
+ data: ErrorDetail;
264
+ } | {
265
+ status: 401;
266
+ data: ErrorDetail;
267
+ } | {
268
+ status: 403;
269
+ data: ErrorDetail;
270
+ } | {
271
+ status: 404;
272
+ data: ErrorDetail;
273
+ } | {
274
+ status: 409;
275
+ data: ErrorBody;
276
+ } | {
277
+ status: 422;
278
+ data: ErrorBody;
279
+ } | {
280
+ status: 500;
281
+ data: ErrorDetail;
282
+ } | {
283
+ status: 503;
284
+ data: ErrorBody;
285
+ }>("/v1/workflows/executions/code", oazapfts.json({
286
+ ...opts,
287
+ method: "POST",
288
+ body: workflowCodeExecutionRequest
289
+ })));
290
+ }
291
+ /**
292
+ * Lista os workspaces disponíveis para o usuário autenticado
293
+ */
294
+ export function listWorkspaces({ page, pageSize }: {
295
+ page?: number;
296
+ pageSize?: number;
297
+ }, opts?: Oazapfts.RequestOpts) {
298
+ return oazapfts.ok(oazapfts.fetchJson<{
299
+ status: 200;
300
+ data: WorkspacesPage;
301
+ } | {
302
+ status: 400;
303
+ data: ErrorBody;
304
+ } | {
305
+ status: 401;
306
+ } | {
307
+ status: 403;
308
+ } | {
309
+ status: 404;
310
+ data: ErrorBody | {
311
+ [key: string]: any;
312
+ };
313
+ } | {
314
+ status: 409;
315
+ data: ErrorBody;
316
+ } | {
317
+ status: 422;
318
+ data: ErrorBody;
319
+ } | {
320
+ status: 500;
321
+ } | {
322
+ status: 503;
323
+ data: ErrorBody;
324
+ }>(`/v1/workspaces${QS.query(QS.explode({
325
+ page,
326
+ pageSize
327
+ }))}`, {
328
+ ...opts
329
+ }));
330
+ }
331
+ /**
332
+ * Obtém detalhes de um workspace específico
333
+ */
334
+ export function getWorkspace({ workspaceId }: {
335
+ workspaceId: string;
336
+ }, opts?: Oazapfts.RequestOpts) {
337
+ return oazapfts.ok(oazapfts.fetchJson<{
338
+ status: 200;
339
+ data: Workspace;
340
+ } | {
341
+ status: 400;
342
+ data: ErrorBody;
343
+ } | {
344
+ status: 401;
345
+ } | {
346
+ status: 403;
347
+ } | {
348
+ status: 404;
349
+ } | {
350
+ status: 409;
351
+ data: ErrorBody;
352
+ } | {
353
+ status: 422;
354
+ data: ErrorBody;
355
+ } | {
356
+ status: 500;
357
+ } | {
358
+ status: 503;
359
+ data: ErrorBody;
360
+ }>(`/v1/workspaces/${encodeURIComponent(workspaceId)}`, {
361
+ ...opts
362
+ }));
363
+ }
364
+ /**
365
+ * Lista workflows do workspace
366
+ */
367
+ export function listWorkflows({ workspaceId }: {
368
+ workspaceId: string;
369
+ }, opts?: Oazapfts.RequestOpts) {
370
+ return oazapfts.ok(oazapfts.fetchJson<{
371
+ status: 200;
372
+ data: WorkflowList;
373
+ } | {
374
+ status: 400;
375
+ data: ErrorBody;
376
+ } | {
377
+ status: 401;
378
+ } | {
379
+ status: 403;
380
+ } | {
381
+ status: 404;
382
+ data: ErrorBody | {
383
+ [key: string]: any;
384
+ };
385
+ } | {
386
+ status: 409;
387
+ data: ErrorBody;
388
+ } | {
389
+ status: 422;
390
+ data: ErrorBody;
391
+ } | {
392
+ status: 500;
393
+ } | {
394
+ status: 503;
395
+ data: ErrorBody;
396
+ }>(`/v1/workspaces/${encodeURIComponent(workspaceId)}/workflows`, {
397
+ ...opts
398
+ }));
399
+ }
400
+ /**
401
+ * Obtém detalhes de uma execução de workflow. Use o executionnId retornado pelo serviço execução do workflow para consultar o status da execução.
402
+ */
403
+ export function getWorkflowExecution({ executionId }: {
404
+ executionId: string;
405
+ }, opts?: Oazapfts.RequestOpts) {
406
+ return oazapfts.ok(oazapfts.fetchJson<{
407
+ status: 200;
408
+ data: WorkflowExecutionStatus;
409
+ } | {
410
+ status: 400;
411
+ data: ErrorBody;
412
+ } | {
413
+ status: 401;
414
+ data: ErrorDetail;
415
+ } | {
416
+ status: 403;
417
+ data: ErrorDetail;
418
+ } | {
419
+ status: 404;
420
+ data: ErrorDetail;
421
+ } | {
422
+ status: 409;
423
+ data: ErrorBody;
424
+ } | {
425
+ status: 422;
426
+ data: ErrorBody;
427
+ } | {
428
+ status: 500;
429
+ data: ErrorDetail;
430
+ } | {
431
+ status: 503;
432
+ data: ErrorBody;
433
+ }>(`/v1/workflows/executions/${encodeURIComponent(executionId)}`, {
434
+ ...opts
435
+ }));
436
+ }
437
+ export function healthz(opts?: Oazapfts.RequestOpts) {
438
+ return oazapfts.ok(oazapfts.fetchJson<{
439
+ status: 200;
440
+ data: {
441
+ [key: string]: string;
442
+ };
443
+ } | {
444
+ status: 400;
445
+ data: ErrorBody;
446
+ } | {
447
+ status: 401;
448
+ data: ErrorBody;
449
+ } | {
450
+ status: 403;
451
+ data: ErrorBody;
452
+ } | {
453
+ status: 404;
454
+ data: ErrorBody | {
455
+ [key: string]: any;
456
+ };
457
+ } | {
458
+ status: 409;
459
+ data: ErrorBody;
460
+ } | {
461
+ status: 422;
462
+ data: ErrorBody;
463
+ } | {
464
+ status: 500;
465
+ data: ErrorBody;
466
+ } | {
467
+ status: 503;
468
+ data: ErrorBody;
469
+ }>("/healthz", {
470
+ ...opts
471
+ }));
472
+ }
@@ -5,26 +5,26 @@ import { Env, Tenant } from './network/types'
5
5
 
6
6
  type ApisKeys = keyof typeof apisJson;
7
7
 
8
+ declare global {
9
+ interface ImportMeta {
10
+ readonly env: {
11
+ VITE_NETWORK_OVERRIDES: string,
12
+ DEV: boolean,
13
+ PROD: boolean,
14
+ },
15
+ }
16
+ }
17
+
8
18
  type ApiConfig = {
9
19
  url: Record<Env, string>,
10
20
  docs?: string,
11
21
  }
12
22
 
13
- type PartialApiConfig = {
14
- url: Partial<Record<Env, string>>,
15
- docs?: string
16
- }
17
-
18
23
  type Apis = Record<ApisKeys, ApiConfig>;
19
24
 
20
- type PartialApis = Partial<Record<ApisKeys, PartialApiConfig>>;
25
+ type ApiAddress = Record<ApisKeys, string>
21
26
 
22
- type ApiAddress = {
23
- [api: string]: string,
24
- }
25
-
26
- let defaultApis: Apis = apisJson;
27
- let overrideApis: PartialApis = {};
27
+ const defaultApis: Apis = apisJson
28
28
 
29
29
  const apis: Record<Tenant, Apis> = {
30
30
  'stackspot': apisJson,
@@ -37,12 +37,12 @@ const apis: Record<Tenant, Apis> = {
37
37
  * @param tenant The current tenant (e.g., 'stackspot', 'itau').
38
38
  * @returns API catalog containing the URLs per environment.
39
39
  */
40
- export function getApisByTenant(tenant: Tenant) {
40
+ function getApisByTenant(tenant: Tenant) {
41
41
  return apis[tenant]
42
42
  }
43
43
 
44
44
  function transformApisToApiAddress(apis: Apis, env: Env): ApiAddress {
45
- const apiAddress: ApiAddress = {}
45
+ const apiAddress = {} as ApiAddress
46
46
 
47
47
  for (const api in apis) {
48
48
  const key = api as ApisKeys
@@ -59,14 +59,28 @@ function transformApisToApiAddress(apis: Apis, env: Env): ApiAddress {
59
59
  * @returns {boolean} true if the URL is found, otherwise false.
60
60
  */
61
61
  function matchesBaseUrl(baseUrl: Record<Env, string>, candidate: Record<Env, string>): boolean {
62
- const envs: Env[] = ['dev', 'stg', 'prd'];
62
+ const envs: Env[] = ['dev', 'stg', 'prd']
63
63
 
64
64
  return envs.every(e => {
65
65
  if (candidate[e]) {
66
- return baseUrl[e] === candidate[e];
66
+ return baseUrl[e] === candidate[e]
67
67
  }
68
- return true;
69
- });
68
+ return true
69
+ })
70
+ }
71
+
72
+ const getApiOverride = () => {
73
+ const envs = import.meta.env
74
+
75
+ let overrideAPIsURL = {} as ApiAddress
76
+ if (envs.PROD) return overrideAPIsURL
77
+
78
+ try {
79
+ overrideAPIsURL= JSON.parse(envs.VITE_NETWORK_OVERRIDES)
80
+ return overrideAPIsURL
81
+ } catch {
82
+ return overrideAPIsURL
83
+ }
70
84
  }
71
85
 
72
86
  /**
@@ -77,42 +91,47 @@ function matchesBaseUrl(baseUrl: Record<Env, string>, candidate: Record<Env, str
77
91
  * @param tenant the current tenant.
78
92
  * @returns {string} the base URL for the given environment and tenant, applying any overrides if available.
79
93
  */
80
- export const getBaseUrlByTenantWithOverride = (baseUrl: Record<Env, string>, targetEnv: Env = 'prd', tenant: Tenant = 'stackspot'): string => {
81
- let matchesApiName: ApisKeys | null = null;
94
+ export const getBaseUrlByTenantWithOverride = (baseUrl: Record<Env, string>, targetEnv: Env = 'prd',
95
+ tenant: Tenant = 'stackspot'): string => {
96
+ let matchesApiName: ApisKeys | null = null
82
97
 
83
98
  for (const [apiName, config] of Object.entries(defaultApis) as [ApisKeys, ApiConfig][]) {
84
99
  if (matchesBaseUrl(baseUrl, config.url)) {
85
- matchesApiName = apiName;
86
- break;
100
+ matchesApiName = apiName
101
+ break
87
102
  }
88
103
  }
89
104
 
90
105
  if (!matchesApiName) return ''
91
106
 
92
- const overrideUrl = overrideApis[matchesApiName]?.url?.[targetEnv]
93
- if (overrideUrl) {
94
- return overrideUrl;
95
- }
96
-
107
+ const overrides = getApiOverride()
97
108
  const apis = getApisByTenant(tenant)
98
- return apis[matchesApiName]?.url?.[targetEnv];
109
+ const api = apis[matchesApiName]
110
+ return overrides?.[matchesApiName] ?? api?.url?.[targetEnv]
99
111
  }
100
112
 
101
- /**
102
- * Sets the APIs addresses for override.
103
- * @param customApis a JSON object containing APIs address to override.
104
- */
105
- export const setApisOverride = (customApis: PartialApis) => {
106
- overrideApis = customApis;
113
+ export const getApisBaseUrlConfig = (env: Env = 'prd', tenant: Tenant = 'stackspot'): ApiAddress => {
114
+ const overrides = getApiOverride()
115
+ const apis = getApisByTenant(tenant)
116
+ const apiMap = {} as ApiAddress
117
+
118
+ for (const [key, value] of Object.entries(apis)) {
119
+ if (value?.url && value.url?.[env]) {
120
+ const url = value.url[env]
121
+ const api = key as ApisKeys
122
+ apiMap[api] = url
123
+ }
124
+ }
125
+
126
+ return { ...overrides, ...apiMap }
107
127
  }
108
128
 
129
+
109
130
  /**
110
131
  * Sets the default APIs addresses for each environments.
111
132
  * @returns {Apis} an object containing APIs URLs grouped by api name and enviroments.
112
133
  */
113
- export const getApiAddresses = (): Apis => {
114
- return defaultApis;
115
- }
134
+ export const getApiAddresses = (): Apis => defaultApis
116
135
 
117
136
  export const apiAddresses = () => {
118
137
  const env = NetworkClient.getEnv()
@@ -221,5 +221,21 @@
221
221
  "prd": "https://discover-core.stackspot.com"
222
222
  },
223
223
  "docs": "/v3/api-docs"
224
+ },
225
+ "accountAssetManager" : {
226
+ "url": {
227
+ "dev": "https://account-asset-manager.dev.stackspot.com",
228
+ "stg": "https://account-asset-manager.stg.stackspot.com",
229
+ "prd": "https://account-asset-manager.stackspot.com"
230
+ },
231
+ "docs": "/v3/api-docs"
232
+ },
233
+ "edpBfa": {
234
+ "url": {
235
+ "dev": "https://adp-development-edp-bfa.dev.stackspot.com",
236
+ "stg": "https://adp-development-edp-bfa.stg.stackspot.com",
237
+ "prd": "https://edp-bfa.stackspot.com"
238
+ },
239
+ "docs": "/openapi.json"
224
240
  }
225
241
  }