@databolsa/sdk 1.0.10 → 1.0.11

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.
package/dist/schema.d.ts CHANGED
@@ -1087,6 +1087,258 @@ export interface paths {
1087
1087
  patch?: never;
1088
1088
  trace?: never;
1089
1089
  };
1090
+ "/v1/portfolio/history": {
1091
+ parameters: {
1092
+ query?: never;
1093
+ header?: never;
1094
+ path?: never;
1095
+ cookie?: never;
1096
+ };
1097
+ /**
1098
+ * Histórico mensal consolidado
1099
+ * @description Série mensal do patrimônio consolidado do dono da chave: valor de mercado, aporte acumulado, proventos recebidos e resultado realizado, mês a mês. Exclui carteiras marcadas como simulação.
1100
+ */
1101
+ get: operations["getPortfolioHistory"];
1102
+ put?: never;
1103
+ post?: never;
1104
+ delete?: never;
1105
+ options?: never;
1106
+ head?: never;
1107
+ patch?: never;
1108
+ trace?: never;
1109
+ };
1110
+ "/v1/portfolios": {
1111
+ parameters: {
1112
+ query?: never;
1113
+ header?: never;
1114
+ path?: never;
1115
+ cookie?: never;
1116
+ };
1117
+ /**
1118
+ * Suas carteiras
1119
+ * @description Lista as carteiras do dono da chave (id, nome, nº de ativos, flag de simulação). Use o `id` nas demais operações de carteira.
1120
+ */
1121
+ get: operations["listPortfolios"];
1122
+ put?: never;
1123
+ /**
1124
+ * Criar carteira
1125
+ * @description CRIA uma carteira REAL na conta do dono da chave. O número de carteiras é limitado pelo plano (resposta 402 quando o teto é atingido). Nome único por conta (409 em duplicidade).
1126
+ */
1127
+ post: operations["createPortfolio"];
1128
+ delete?: never;
1129
+ options?: never;
1130
+ head?: never;
1131
+ patch?: never;
1132
+ trace?: never;
1133
+ };
1134
+ "/v1/portfolios/import-template": {
1135
+ parameters: {
1136
+ query?: never;
1137
+ header?: never;
1138
+ path?: never;
1139
+ cookie?: never;
1140
+ };
1141
+ /**
1142
+ * Template CSV de import manual
1143
+ * @description Baixa o template CSV de preenchimento manual (colunas: ticker, operacao, data, quantidade, preco) aceito pelo import de planilha.
1144
+ */
1145
+ get: operations["getPortfolioImportTemplate"];
1146
+ put?: never;
1147
+ post?: never;
1148
+ delete?: never;
1149
+ options?: never;
1150
+ head?: never;
1151
+ patch?: never;
1152
+ trace?: never;
1153
+ };
1154
+ "/v1/portfolios/{id}": {
1155
+ parameters: {
1156
+ query?: never;
1157
+ header?: never;
1158
+ path?: never;
1159
+ cookie?: never;
1160
+ };
1161
+ /**
1162
+ * Detalhe de uma carteira
1163
+ * @description Carteira computada: posições com preço médio, quantidade, valor de mercado, P&L, proventos e alocação, além dos totais. A posição é derivada do ledger de transações.
1164
+ */
1165
+ get: operations["getPortfolioDetail"];
1166
+ put?: never;
1167
+ post?: never;
1168
+ /**
1169
+ * Apagar carteira
1170
+ * @description APAGA a carteira REAL do dono da chave, com TODOS os ativos e transações (cascata, irreversível). Confirme com o usuário antes de chamar.
1171
+ */
1172
+ delete: operations["deletePortfolio"];
1173
+ options?: never;
1174
+ head?: never;
1175
+ /**
1176
+ * Editar carteira
1177
+ * @description ALTERA a carteira REAL do dono da chave: renomeia (`name`), muda a visibilidade (`visibility`) e/ou marca como simulação (`exclude_from_consolidated`, fora do consolidado). Informe ao menos um campo.
1178
+ */
1179
+ patch: operations["updatePortfolio"];
1180
+ trace?: never;
1181
+ };
1182
+ "/v1/portfolios/{id}/history": {
1183
+ parameters: {
1184
+ query?: never;
1185
+ header?: never;
1186
+ path?: never;
1187
+ cookie?: never;
1188
+ };
1189
+ /**
1190
+ * Histórico mensal de uma carteira
1191
+ * @description Série mensal (patrimônio, aporte, proventos, realizado) de UMA carteira específica.
1192
+ */
1193
+ get: operations["getPortfolioHistoryById"];
1194
+ put?: never;
1195
+ post?: never;
1196
+ delete?: never;
1197
+ options?: never;
1198
+ head?: never;
1199
+ patch?: never;
1200
+ trace?: never;
1201
+ };
1202
+ "/v1/portfolios/{id}/assets": {
1203
+ parameters: {
1204
+ query?: never;
1205
+ header?: never;
1206
+ path?: never;
1207
+ cookie?: never;
1208
+ };
1209
+ get?: never;
1210
+ put?: never;
1211
+ /**
1212
+ * Adicionar ativo à carteira
1213
+ * @description ADICIONA um ativo à carteira REAL do dono da chave (idempotente — repetir não duplica). Ativo sem transações funciona como watchlist; lance transações para rastrear posição. Para Tesouro Direto use o nome oficial do título (ex.: TESOURO SELIC 2029).
1214
+ */
1215
+ post: operations["addPortfolioAsset"];
1216
+ /**
1217
+ * Remover ativo da carteira
1218
+ * @description REMOVE um ativo da carteira REAL do dono da chave, APAGANDO o ledger de transações dele nesta carteira (cascata, irreversível). Confirme com o usuário antes de chamar.
1219
+ */
1220
+ delete: operations["removePortfolioAsset"];
1221
+ options?: never;
1222
+ head?: never;
1223
+ /**
1224
+ * Taxa contratada de renda fixa
1225
+ * @description DEFINE a taxa contratada de uma posição de renda fixa (para o cálculo de rendimento): `rf_indexer` (cdi = % do CDI, prefixado = % a.a., ipca = IPCA + % a.a.) e `rf_rate`. Use `rf_indexer: none` para limpar.
1226
+ */
1227
+ patch: operations["updatePortfolioAsset"];
1228
+ trace?: never;
1229
+ };
1230
+ "/v1/portfolios/{id}/transactions": {
1231
+ parameters: {
1232
+ query?: never;
1233
+ header?: never;
1234
+ path?: never;
1235
+ cookie?: never;
1236
+ };
1237
+ /**
1238
+ * Ledger de um ativo
1239
+ * @description Lista as transações (compras, vendas, splits, ajustes) de um ativo da carteira, em ordem cronológica.
1240
+ */
1241
+ get: operations["listPortfolioTransactions"];
1242
+ put?: never;
1243
+ /**
1244
+ * Lançar transação
1245
+ * @description LANÇA uma transação na carteira REAL do dono da chave. Se o ativo ainda não está na carteira, ele é adicionado automaticamente — "compra de 100 PETR4" é uma única chamada. buy/sell exigem `quantity`; `price` é opcional (custo desconhecido); split usa `ratio` (2 = 2:1). Confirme valores com o usuário.
1246
+ */
1247
+ post: operations["addPortfolioTransaction"];
1248
+ delete?: never;
1249
+ options?: never;
1250
+ head?: never;
1251
+ patch?: never;
1252
+ trace?: never;
1253
+ };
1254
+ "/v1/portfolios/{id}/transactions/{txId}": {
1255
+ parameters: {
1256
+ query?: never;
1257
+ header?: never;
1258
+ path?: never;
1259
+ cookie?: never;
1260
+ };
1261
+ get?: never;
1262
+ put?: never;
1263
+ post?: never;
1264
+ /**
1265
+ * Remover transação
1266
+ * @description REMOVE uma transação do ledger da carteira REAL do dono da chave (irreversível). Confirme com o usuário antes de chamar.
1267
+ */
1268
+ delete: operations["deletePortfolioTransaction"];
1269
+ options?: never;
1270
+ head?: never;
1271
+ /**
1272
+ * Editar transação
1273
+ * @description ALTERA uma transação existente da carteira REAL do dono da chave (patch parcial: informe só os campos a mudar). Confirme com o usuário antes de chamar.
1274
+ */
1275
+ patch: operations["updatePortfolioTransaction"];
1276
+ trace?: never;
1277
+ };
1278
+ "/v1/portfolios/{id}/imports": {
1279
+ parameters: {
1280
+ query?: never;
1281
+ header?: never;
1282
+ path?: never;
1283
+ cookie?: never;
1284
+ };
1285
+ /**
1286
+ * Histórico de imports
1287
+ * @description Lista os imports já feitos nesta carteira (arquivo, fonte, data e resumo persistido).
1288
+ */
1289
+ get: operations["listPortfolioImports"];
1290
+ put?: never;
1291
+ /**
1292
+ * Importar planilha (B3 ou template manual)
1293
+ * @description IMPORTA uma planilha para a carteira REAL do dono da chave: Negociação ou Movimentação da B3 (.xlsx) ou o template manual (.csv/.xlsx) — o formato é detectado automaticamente. Envie o arquivo em `content_base64` (máx. 8 MB). Idempotente: reenviar o mesmo arquivo não duplica lançamentos. A resposta resume o que entrou (importadas, duplicadas, ignoradas) e traz avisos.
1294
+ */
1295
+ post: operations["importPortfolioFile"];
1296
+ delete?: never;
1297
+ options?: never;
1298
+ head?: never;
1299
+ patch?: never;
1300
+ trace?: never;
1301
+ };
1302
+ "/v1/portfolios/{id}/imports/{importId}/rows": {
1303
+ parameters: {
1304
+ query?: never;
1305
+ header?: never;
1306
+ path?: never;
1307
+ cookie?: never;
1308
+ };
1309
+ /**
1310
+ * Linhas de um import
1311
+ * @description Drill-down de um import: cada linha do arquivo com status (imported, ignored, duplicate, error) e motivo.
1312
+ */
1313
+ get: operations["listPortfolioImportRows"];
1314
+ put?: never;
1315
+ post?: never;
1316
+ delete?: never;
1317
+ options?: never;
1318
+ head?: never;
1319
+ patch?: never;
1320
+ trace?: never;
1321
+ };
1322
+ "/v1/portfolios/{id}/reconcile": {
1323
+ parameters: {
1324
+ query?: never;
1325
+ header?: never;
1326
+ path?: never;
1327
+ cookie?: never;
1328
+ };
1329
+ get?: never;
1330
+ put?: never;
1331
+ /**
1332
+ * Reconciliar posição à B3
1333
+ * @description AJUSTA a posição calculada de um ativo à quantidade declarada pela B3 (`target_qty` na data `as_of`), inserindo um ajuste idempotente — útil quando um evento (ex.: subscrição) não veio no extrato. Confirme a quantidade com o usuário antes de chamar.
1334
+ */
1335
+ post: operations["reconcilePortfolioAsset"];
1336
+ delete?: never;
1337
+ options?: never;
1338
+ head?: never;
1339
+ patch?: never;
1340
+ trace?: never;
1341
+ };
1090
1342
  "/v1/suitability": {
1091
1343
  parameters: {
1092
1344
  query?: never;
@@ -1878,6 +2130,90 @@ export interface components {
1878
2130
  unrealizedPct: number;
1879
2131
  assets: number;
1880
2132
  };
2133
+ PortfolioListItem: {
2134
+ id: string;
2135
+ name: string;
2136
+ /** @description Nº de ativos na carteira. */
2137
+ count?: number;
2138
+ /** Format: date-time */
2139
+ created_at?: string;
2140
+ /** @description true = carteira de simulação. */
2141
+ exclude_from_consolidated?: boolean;
2142
+ };
2143
+ /** @description Carteira computada: posições derivadas do ledger + métricas agregadas. */
2144
+ PortfolioDetail: {
2145
+ id?: string;
2146
+ name?: string;
2147
+ patrimonio?: number;
2148
+ invested?: number;
2149
+ unrealizedPL?: number;
2150
+ unrealizedPct?: number;
2151
+ realizedPL?: number;
2152
+ /** @description Posições com qty, preço médio, valor de mercado, P&L, proventos e peso. */
2153
+ holdings?: Record<string, never>[];
2154
+ };
2155
+ PortfolioTransaction: {
2156
+ id: string;
2157
+ /** @description buy | sell | split | adjust */
2158
+ kind: string;
2159
+ /** @description AAAA-MM-DD */
2160
+ trade_date: string;
2161
+ quantity: number;
2162
+ /** @description Preço unitário (null = custo desconhecido). */
2163
+ price?: number | null;
2164
+ fees?: number;
2165
+ /** @description Fator do split (só kind=split). */
2166
+ ratio?: number | null;
2167
+ currency?: string;
2168
+ note?: string | null;
2169
+ };
2170
+ PortfolioHistoryResponse: {
2171
+ /** @description Um ponto por mês: patrimônio, aporte acumulado, proventos e realizado. */
2172
+ points?: Record<string, never>[];
2173
+ };
2174
+ /** @description Resumo de um import de planilha (o detalhe linha a linha fica em listPortfolioImportRows). */
2175
+ PortfolioImportSummary: {
2176
+ import_id: string;
2177
+ /** @description negociacao | movimentacao | manual (detectado pelo cabeçalho). */
2178
+ source: string;
2179
+ /** @description Linhas entendidas no arquivo. */
2180
+ parsed?: number;
2181
+ /** @description Lançamentos novos gravados. */
2182
+ imported: number;
2183
+ /** @description Lançamentos já existentes (reimport) pulados. */
2184
+ duplicates_skipped?: number;
2185
+ rows_ignored?: number;
2186
+ /** @description Trades pulados por já estarem cobertos por outra fonte. */
2187
+ cross_source_skipped?: number;
2188
+ symbols?: number;
2189
+ period?: {
2190
+ from?: string | null;
2191
+ to?: string | null;
2192
+ };
2193
+ /** @description Até 10 avisos. */
2194
+ warnings?: string[];
2195
+ /** @description Nº de avisos omitidos além dos 10 primeiros. */
2196
+ warnings_truncated?: number;
2197
+ };
2198
+ PortfolioImportListItem: {
2199
+ id: string;
2200
+ filename?: string | null;
2201
+ source: string;
2202
+ /** Format: date-time */
2203
+ createdAt?: string;
2204
+ summary?: Record<string, never>;
2205
+ warnings?: string[];
2206
+ };
2207
+ PortfolioImportRow: {
2208
+ row_index: number;
2209
+ /** @description imported | ignored | duplicate | error */
2210
+ status: string;
2211
+ kind?: string | null;
2212
+ label?: string | null;
2213
+ reason?: string | null;
2214
+ external_id?: string | null;
2215
+ raw?: unknown;
2216
+ };
1881
2217
  /** @description Carteira consolidada do usuário (mesmo resumo que o agente de IA usa). */
1882
2218
  PortfolioContext: {
1883
2219
  hasPortfolio: boolean;
@@ -4269,6 +4605,770 @@ export interface operations {
4269
4605
  };
4270
4606
  };
4271
4607
  };
4608
+ getPortfolioHistory: {
4609
+ parameters: {
4610
+ query?: never;
4611
+ header?: never;
4612
+ path?: never;
4613
+ cookie?: never;
4614
+ };
4615
+ requestBody?: never;
4616
+ responses: {
4617
+ /** @description Pontos mensais. */
4618
+ 200: {
4619
+ headers: {
4620
+ [name: string]: unknown;
4621
+ };
4622
+ content: {
4623
+ "application/json": components["schemas"]["PortfolioHistoryResponse"];
4624
+ };
4625
+ };
4626
+ /** @description Erro (RFC 9457 application/problem+json) */
4627
+ default: {
4628
+ headers: {
4629
+ [name: string]: unknown;
4630
+ };
4631
+ content: {
4632
+ "application/problem+json": Record<string, never>;
4633
+ };
4634
+ };
4635
+ };
4636
+ };
4637
+ listPortfolios: {
4638
+ parameters: {
4639
+ query?: never;
4640
+ header?: never;
4641
+ path?: never;
4642
+ cookie?: never;
4643
+ };
4644
+ requestBody?: never;
4645
+ responses: {
4646
+ /** @description Carteiras da conta. */
4647
+ 200: {
4648
+ headers: {
4649
+ [name: string]: unknown;
4650
+ };
4651
+ content: {
4652
+ "application/json": {
4653
+ portfolios?: components["schemas"]["PortfolioListItem"][];
4654
+ };
4655
+ };
4656
+ };
4657
+ /** @description Erro (RFC 9457 application/problem+json) */
4658
+ default: {
4659
+ headers: {
4660
+ [name: string]: unknown;
4661
+ };
4662
+ content: {
4663
+ "application/problem+json": Record<string, never>;
4664
+ };
4665
+ };
4666
+ };
4667
+ };
4668
+ createPortfolio: {
4669
+ parameters: {
4670
+ query?: never;
4671
+ header?: never;
4672
+ path?: never;
4673
+ cookie?: never;
4674
+ };
4675
+ requestBody: {
4676
+ content: {
4677
+ "application/json": {
4678
+ /** @description Nome da carteira (até 60 caracteres, único na conta). */
4679
+ name: string;
4680
+ /**
4681
+ * @description Visibilidade (default private).
4682
+ * @enum {string}
4683
+ */
4684
+ visibility?: "private" | "unlisted" | "public";
4685
+ };
4686
+ };
4687
+ };
4688
+ responses: {
4689
+ /** @description Carteira criada. */
4690
+ 201: {
4691
+ headers: {
4692
+ [name: string]: unknown;
4693
+ };
4694
+ content: {
4695
+ "application/json": components["schemas"]["PortfolioListItem"];
4696
+ };
4697
+ };
4698
+ /** @description Erro (RFC 9457 application/problem+json) */
4699
+ default: {
4700
+ headers: {
4701
+ [name: string]: unknown;
4702
+ };
4703
+ content: {
4704
+ "application/problem+json": Record<string, never>;
4705
+ };
4706
+ };
4707
+ };
4708
+ };
4709
+ getPortfolioImportTemplate: {
4710
+ parameters: {
4711
+ query?: never;
4712
+ header?: never;
4713
+ path?: never;
4714
+ cookie?: never;
4715
+ };
4716
+ requestBody?: never;
4717
+ responses: {
4718
+ /** @description Arquivo CSV. */
4719
+ 200: {
4720
+ headers: {
4721
+ [name: string]: unknown;
4722
+ };
4723
+ content: {
4724
+ "text/csv": string;
4725
+ };
4726
+ };
4727
+ /** @description Erro (RFC 9457 application/problem+json) */
4728
+ default: {
4729
+ headers: {
4730
+ [name: string]: unknown;
4731
+ };
4732
+ content: {
4733
+ "application/problem+json": Record<string, never>;
4734
+ };
4735
+ };
4736
+ };
4737
+ };
4738
+ getPortfolioDetail: {
4739
+ parameters: {
4740
+ query?: never;
4741
+ header?: never;
4742
+ path: {
4743
+ /** @description Id da carteira (de listPortfolios). */
4744
+ id: string;
4745
+ };
4746
+ cookie?: never;
4747
+ };
4748
+ requestBody?: never;
4749
+ responses: {
4750
+ /** @description Carteira computada. */
4751
+ 200: {
4752
+ headers: {
4753
+ [name: string]: unknown;
4754
+ };
4755
+ content: {
4756
+ "application/json": components["schemas"]["PortfolioDetail"];
4757
+ };
4758
+ };
4759
+ /** @description Erro (RFC 9457 application/problem+json) */
4760
+ default: {
4761
+ headers: {
4762
+ [name: string]: unknown;
4763
+ };
4764
+ content: {
4765
+ "application/problem+json": Record<string, never>;
4766
+ };
4767
+ };
4768
+ };
4769
+ };
4770
+ deletePortfolio: {
4771
+ parameters: {
4772
+ query?: never;
4773
+ header?: never;
4774
+ path: {
4775
+ /** @description Id da carteira. */
4776
+ id: string;
4777
+ };
4778
+ cookie?: never;
4779
+ };
4780
+ requestBody?: never;
4781
+ responses: {
4782
+ /** @description Carteira apagada. */
4783
+ 200: {
4784
+ headers: {
4785
+ [name: string]: unknown;
4786
+ };
4787
+ content: {
4788
+ "application/json": {
4789
+ deleted?: boolean;
4790
+ id?: string;
4791
+ };
4792
+ };
4793
+ };
4794
+ /** @description Erro (RFC 9457 application/problem+json) */
4795
+ default: {
4796
+ headers: {
4797
+ [name: string]: unknown;
4798
+ };
4799
+ content: {
4800
+ "application/problem+json": Record<string, never>;
4801
+ };
4802
+ };
4803
+ };
4804
+ };
4805
+ updatePortfolio: {
4806
+ parameters: {
4807
+ query?: never;
4808
+ header?: never;
4809
+ path: {
4810
+ /** @description Id da carteira. */
4811
+ id: string;
4812
+ };
4813
+ cookie?: never;
4814
+ };
4815
+ requestBody: {
4816
+ content: {
4817
+ "application/json": {
4818
+ /** @description Novo nome (até 60 caracteres, único na conta). */
4819
+ name?: string;
4820
+ /**
4821
+ * @description Nova visibilidade.
4822
+ * @enum {string}
4823
+ */
4824
+ visibility?: "private" | "unlisted" | "public";
4825
+ /** @description true = carteira de simulação (fora do consolidado). */
4826
+ exclude_from_consolidated?: boolean;
4827
+ };
4828
+ };
4829
+ };
4830
+ responses: {
4831
+ /** @description Campos alterados. */
4832
+ 200: {
4833
+ headers: {
4834
+ [name: string]: unknown;
4835
+ };
4836
+ content: {
4837
+ "application/json": Record<string, never>;
4838
+ };
4839
+ };
4840
+ /** @description Erro (RFC 9457 application/problem+json) */
4841
+ default: {
4842
+ headers: {
4843
+ [name: string]: unknown;
4844
+ };
4845
+ content: {
4846
+ "application/problem+json": Record<string, never>;
4847
+ };
4848
+ };
4849
+ };
4850
+ };
4851
+ getPortfolioHistoryById: {
4852
+ parameters: {
4853
+ query?: never;
4854
+ header?: never;
4855
+ path: {
4856
+ /** @description Id da carteira. */
4857
+ id: string;
4858
+ };
4859
+ cookie?: never;
4860
+ };
4861
+ requestBody?: never;
4862
+ responses: {
4863
+ /** @description Pontos mensais. */
4864
+ 200: {
4865
+ headers: {
4866
+ [name: string]: unknown;
4867
+ };
4868
+ content: {
4869
+ "application/json": components["schemas"]["PortfolioHistoryResponse"];
4870
+ };
4871
+ };
4872
+ /** @description Erro (RFC 9457 application/problem+json) */
4873
+ default: {
4874
+ headers: {
4875
+ [name: string]: unknown;
4876
+ };
4877
+ content: {
4878
+ "application/problem+json": Record<string, never>;
4879
+ };
4880
+ };
4881
+ };
4882
+ };
4883
+ addPortfolioAsset: {
4884
+ parameters: {
4885
+ query?: never;
4886
+ header?: never;
4887
+ path: {
4888
+ /** @description Id da carteira. */
4889
+ id: string;
4890
+ };
4891
+ cookie?: never;
4892
+ };
4893
+ requestBody: {
4894
+ content: {
4895
+ "application/json": {
4896
+ /**
4897
+ * @description Tipo do ativo.
4898
+ * @enum {string}
4899
+ */
4900
+ asset_type: "stock" | "fii" | "bdr" | "index" | "tesouro" | "crypto" | "option" | "renda_fixa";
4901
+ /** @description Ticker (ex.: PETR4) ou nome oficial do título do Tesouro. */
4902
+ symbol: string;
4903
+ };
4904
+ };
4905
+ };
4906
+ responses: {
4907
+ /** @description Ativo na carteira. */
4908
+ 201: {
4909
+ headers: {
4910
+ [name: string]: unknown;
4911
+ };
4912
+ content: {
4913
+ "application/json": Record<string, never>;
4914
+ };
4915
+ };
4916
+ /** @description Erro (RFC 9457 application/problem+json) */
4917
+ default: {
4918
+ headers: {
4919
+ [name: string]: unknown;
4920
+ };
4921
+ content: {
4922
+ "application/problem+json": Record<string, never>;
4923
+ };
4924
+ };
4925
+ };
4926
+ };
4927
+ removePortfolioAsset: {
4928
+ parameters: {
4929
+ query: {
4930
+ /** @description Tipo do ativo. */
4931
+ asset_type: "stock" | "fii" | "bdr" | "index" | "tesouro" | "crypto" | "option" | "renda_fixa";
4932
+ /** @description Ticker ou nome do título. */
4933
+ symbol: string;
4934
+ };
4935
+ header?: never;
4936
+ path: {
4937
+ /** @description Id da carteira. */
4938
+ id: string;
4939
+ };
4940
+ cookie?: never;
4941
+ };
4942
+ requestBody?: never;
4943
+ responses: {
4944
+ /** @description Ativo removido. */
4945
+ 200: {
4946
+ headers: {
4947
+ [name: string]: unknown;
4948
+ };
4949
+ content: {
4950
+ "application/json": Record<string, never>;
4951
+ };
4952
+ };
4953
+ /** @description Erro (RFC 9457 application/problem+json) */
4954
+ default: {
4955
+ headers: {
4956
+ [name: string]: unknown;
4957
+ };
4958
+ content: {
4959
+ "application/problem+json": Record<string, never>;
4960
+ };
4961
+ };
4962
+ };
4963
+ };
4964
+ updatePortfolioAsset: {
4965
+ parameters: {
4966
+ query: {
4967
+ /** @description Tipo do ativo (renda_fixa/tesouro). */
4968
+ asset_type: string;
4969
+ /** @description Código do papel. */
4970
+ symbol: string;
4971
+ };
4972
+ header?: never;
4973
+ path: {
4974
+ /** @description Id da carteira. */
4975
+ id: string;
4976
+ };
4977
+ cookie?: never;
4978
+ };
4979
+ requestBody: {
4980
+ content: {
4981
+ "application/json": {
4982
+ /**
4983
+ * @description Indexador (none limpa a taxa).
4984
+ * @enum {string}
4985
+ */
4986
+ rf_indexer: "cdi" | "prefixado" | "ipca" | "none";
4987
+ /** @description Taxa (ex.: 110 = 110% do CDI; 6.2 = IPCA+6,2%). */
4988
+ rf_rate?: number;
4989
+ };
4990
+ };
4991
+ };
4992
+ responses: {
4993
+ /** @description Meta da posição. */
4994
+ 200: {
4995
+ headers: {
4996
+ [name: string]: unknown;
4997
+ };
4998
+ content: {
4999
+ "application/json": Record<string, never>;
5000
+ };
5001
+ };
5002
+ /** @description Erro (RFC 9457 application/problem+json) */
5003
+ default: {
5004
+ headers: {
5005
+ [name: string]: unknown;
5006
+ };
5007
+ content: {
5008
+ "application/problem+json": Record<string, never>;
5009
+ };
5010
+ };
5011
+ };
5012
+ };
5013
+ listPortfolioTransactions: {
5014
+ parameters: {
5015
+ query: {
5016
+ /** @description Tipo do ativo. */
5017
+ asset_type: string;
5018
+ /** @description Ticker ou nome do título. */
5019
+ symbol: string;
5020
+ };
5021
+ header?: never;
5022
+ path: {
5023
+ /** @description Id da carteira. */
5024
+ id: string;
5025
+ };
5026
+ cookie?: never;
5027
+ };
5028
+ requestBody?: never;
5029
+ responses: {
5030
+ /** @description Transações do ativo. */
5031
+ 200: {
5032
+ headers: {
5033
+ [name: string]: unknown;
5034
+ };
5035
+ content: {
5036
+ "application/json": {
5037
+ transactions?: components["schemas"]["PortfolioTransaction"][];
5038
+ };
5039
+ };
5040
+ };
5041
+ /** @description Erro (RFC 9457 application/problem+json) */
5042
+ default: {
5043
+ headers: {
5044
+ [name: string]: unknown;
5045
+ };
5046
+ content: {
5047
+ "application/problem+json": Record<string, never>;
5048
+ };
5049
+ };
5050
+ };
5051
+ };
5052
+ addPortfolioTransaction: {
5053
+ parameters: {
5054
+ query?: never;
5055
+ header?: never;
5056
+ path: {
5057
+ /** @description Id da carteira. */
5058
+ id: string;
5059
+ };
5060
+ cookie?: never;
5061
+ };
5062
+ requestBody: {
5063
+ content: {
5064
+ "application/json": {
5065
+ /**
5066
+ * @description Tipo do ativo.
5067
+ * @enum {string}
5068
+ */
5069
+ asset_type: "stock" | "fii" | "bdr" | "index" | "tesouro" | "crypto" | "option" | "renda_fixa";
5070
+ /** @description Ticker (ex.: PETR4) ou nome oficial do título do Tesouro. */
5071
+ symbol: string;
5072
+ /**
5073
+ * @description Tipo da transação.
5074
+ * @enum {string}
5075
+ */
5076
+ kind: "buy" | "sell" | "split";
5077
+ /** @description Data do negócio (AAAA-MM-DD). */
5078
+ trade_date: string;
5079
+ /** @description Quantidade (> 0; obrigatória em buy/sell). */
5080
+ quantity?: number;
5081
+ /** @description Preço unitário em BRL (omita se desconhecido). */
5082
+ price?: number;
5083
+ /** @description Custos/corretagem em BRL (default 0). */
5084
+ fees?: number;
5085
+ /** @description Fator do split (2 = 2:1; 0.5 = grupamento 1:2). */
5086
+ ratio?: number;
5087
+ /** @description Observação livre (até 280 caracteres). */
5088
+ note?: string;
5089
+ };
5090
+ };
5091
+ };
5092
+ responses: {
5093
+ /** @description Transação lançada. */
5094
+ 201: {
5095
+ headers: {
5096
+ [name: string]: unknown;
5097
+ };
5098
+ content: {
5099
+ "application/json": {
5100
+ transaction?: components["schemas"]["PortfolioTransaction"];
5101
+ };
5102
+ };
5103
+ };
5104
+ /** @description Erro (RFC 9457 application/problem+json) */
5105
+ default: {
5106
+ headers: {
5107
+ [name: string]: unknown;
5108
+ };
5109
+ content: {
5110
+ "application/problem+json": Record<string, never>;
5111
+ };
5112
+ };
5113
+ };
5114
+ };
5115
+ deletePortfolioTransaction: {
5116
+ parameters: {
5117
+ query?: never;
5118
+ header?: never;
5119
+ path: {
5120
+ /** @description Id da carteira. */
5121
+ id: string;
5122
+ /** @description Id da transação. */
5123
+ txId: string;
5124
+ };
5125
+ cookie?: never;
5126
+ };
5127
+ requestBody?: never;
5128
+ responses: {
5129
+ /** @description Transação removida. */
5130
+ 200: {
5131
+ headers: {
5132
+ [name: string]: unknown;
5133
+ };
5134
+ content: {
5135
+ "application/json": {
5136
+ deleted?: boolean;
5137
+ id?: string;
5138
+ };
5139
+ };
5140
+ };
5141
+ /** @description Erro (RFC 9457 application/problem+json) */
5142
+ default: {
5143
+ headers: {
5144
+ [name: string]: unknown;
5145
+ };
5146
+ content: {
5147
+ "application/problem+json": Record<string, never>;
5148
+ };
5149
+ };
5150
+ };
5151
+ };
5152
+ updatePortfolioTransaction: {
5153
+ parameters: {
5154
+ query?: never;
5155
+ header?: never;
5156
+ path: {
5157
+ /** @description Id da carteira. */
5158
+ id: string;
5159
+ /** @description Id da transação (de listPortfolioTransactions). */
5160
+ txId: string;
5161
+ };
5162
+ cookie?: never;
5163
+ };
5164
+ requestBody: {
5165
+ content: {
5166
+ "application/json": {
5167
+ /**
5168
+ * @description Tipo da transação.
5169
+ * @enum {string}
5170
+ */
5171
+ kind?: "buy" | "sell" | "split";
5172
+ /** @description Data do negócio (AAAA-MM-DD). */
5173
+ trade_date?: string;
5174
+ /** @description Quantidade. */
5175
+ quantity?: number;
5176
+ /** @description Preço unitário em BRL. */
5177
+ price?: number;
5178
+ /** @description Custos em BRL. */
5179
+ fees?: number;
5180
+ /** @description Fator do split. */
5181
+ ratio?: number;
5182
+ /** @description Observação. */
5183
+ note?: string;
5184
+ };
5185
+ };
5186
+ };
5187
+ responses: {
5188
+ /** @description Transação atualizada. */
5189
+ 200: {
5190
+ headers: {
5191
+ [name: string]: unknown;
5192
+ };
5193
+ content: {
5194
+ "application/json": components["schemas"]["PortfolioTransaction"];
5195
+ };
5196
+ };
5197
+ /** @description Erro (RFC 9457 application/problem+json) */
5198
+ default: {
5199
+ headers: {
5200
+ [name: string]: unknown;
5201
+ };
5202
+ content: {
5203
+ "application/problem+json": Record<string, never>;
5204
+ };
5205
+ };
5206
+ };
5207
+ };
5208
+ listPortfolioImports: {
5209
+ parameters: {
5210
+ query?: never;
5211
+ header?: never;
5212
+ path: {
5213
+ /** @description Id da carteira. */
5214
+ id: string;
5215
+ };
5216
+ cookie?: never;
5217
+ };
5218
+ requestBody?: never;
5219
+ responses: {
5220
+ /** @description Imports da carteira. */
5221
+ 200: {
5222
+ headers: {
5223
+ [name: string]: unknown;
5224
+ };
5225
+ content: {
5226
+ "application/json": {
5227
+ imports?: components["schemas"]["PortfolioImportListItem"][];
5228
+ };
5229
+ };
5230
+ };
5231
+ /** @description Erro (RFC 9457 application/problem+json) */
5232
+ default: {
5233
+ headers: {
5234
+ [name: string]: unknown;
5235
+ };
5236
+ content: {
5237
+ "application/problem+json": Record<string, never>;
5238
+ };
5239
+ };
5240
+ };
5241
+ };
5242
+ importPortfolioFile: {
5243
+ parameters: {
5244
+ query?: never;
5245
+ header?: never;
5246
+ path: {
5247
+ /** @description Id da carteira. */
5248
+ id: string;
5249
+ };
5250
+ cookie?: never;
5251
+ };
5252
+ requestBody: {
5253
+ content: {
5254
+ "application/json": {
5255
+ /** @description Conteúdo do arquivo em base64. */
5256
+ content_base64: string;
5257
+ /** @description Nome do arquivo (ajuda a trilha de auditoria). */
5258
+ filename?: string;
5259
+ };
5260
+ };
5261
+ };
5262
+ responses: {
5263
+ /** @description Resumo do import. */
5264
+ 201: {
5265
+ headers: {
5266
+ [name: string]: unknown;
5267
+ };
5268
+ content: {
5269
+ "application/json": components["schemas"]["PortfolioImportSummary"];
5270
+ };
5271
+ };
5272
+ /** @description Erro (RFC 9457 application/problem+json) */
5273
+ default: {
5274
+ headers: {
5275
+ [name: string]: unknown;
5276
+ };
5277
+ content: {
5278
+ "application/problem+json": Record<string, never>;
5279
+ };
5280
+ };
5281
+ };
5282
+ };
5283
+ listPortfolioImportRows: {
5284
+ parameters: {
5285
+ query?: {
5286
+ /** @description Filtra por status. */
5287
+ status?: "imported" | "ignored" | "duplicate" | "error";
5288
+ /** @description Linhas por página (1–500, default 100). */
5289
+ limit?: number;
5290
+ /** @description Offset de paginação. */
5291
+ offset?: number;
5292
+ };
5293
+ header?: never;
5294
+ path: {
5295
+ /** @description Id da carteira. */
5296
+ id: string;
5297
+ /** @description Id do import (de listPortfolioImports). */
5298
+ importId: string;
5299
+ };
5300
+ cookie?: never;
5301
+ };
5302
+ requestBody?: never;
5303
+ responses: {
5304
+ /** @description Linhas do import. */
5305
+ 200: {
5306
+ headers: {
5307
+ [name: string]: unknown;
5308
+ };
5309
+ content: {
5310
+ "application/json": {
5311
+ total?: number;
5312
+ rows?: components["schemas"]["PortfolioImportRow"][];
5313
+ };
5314
+ };
5315
+ };
5316
+ /** @description Erro (RFC 9457 application/problem+json) */
5317
+ default: {
5318
+ headers: {
5319
+ [name: string]: unknown;
5320
+ };
5321
+ content: {
5322
+ "application/problem+json": Record<string, never>;
5323
+ };
5324
+ };
5325
+ };
5326
+ };
5327
+ reconcilePortfolioAsset: {
5328
+ parameters: {
5329
+ query?: never;
5330
+ header?: never;
5331
+ path: {
5332
+ /** @description Id da carteira. */
5333
+ id: string;
5334
+ };
5335
+ cookie?: never;
5336
+ };
5337
+ requestBody: {
5338
+ content: {
5339
+ "application/json": {
5340
+ /** @description Tipo do ativo. */
5341
+ asset_type: string;
5342
+ /** @description Ticker. */
5343
+ symbol: string;
5344
+ /** @description Quantidade declarada pela B3 (>= 0). */
5345
+ target_qty: number;
5346
+ /** @description Data de referência (AAAA-MM-DD). */
5347
+ as_of: string;
5348
+ };
5349
+ };
5350
+ };
5351
+ responses: {
5352
+ /** @description Resultado do ajuste (delta aplicado). */
5353
+ 200: {
5354
+ headers: {
5355
+ [name: string]: unknown;
5356
+ };
5357
+ content: {
5358
+ "application/json": Record<string, never>;
5359
+ };
5360
+ };
5361
+ /** @description Erro (RFC 9457 application/problem+json) */
5362
+ default: {
5363
+ headers: {
5364
+ [name: string]: unknown;
5365
+ };
5366
+ content: {
5367
+ "application/problem+json": Record<string, never>;
5368
+ };
5369
+ };
5370
+ };
5371
+ };
4272
5372
  getSuitability: {
4273
5373
  parameters: {
4274
5374
  query?: never;