wyzecash 0.1.0 → 0.2.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.
package/CHANGELOG.md ADDED
@@ -0,0 +1,18 @@
1
+ # Mudanças
2
+
3
+ ## 0.2.0
4
+
5
+ **Mudanças que pedem ajuste no seu código:**
6
+
7
+ - Saem `pix.send`, `pix.list` e `pix.retrieve`: enviar Pix e sacar são o mesmo Pix que sai, então use `withdrawals.create` (com `destination` ou `copyPaste`). A rota antiga `/v1/pix/payments` continua respondendo por enquanto, mas vai ser removida.
8
+ - Sai `meds.downloadAttachment`: as provas do MED são internas da WyzeCash e não se baixam pela API (a rota já recusava).
9
+
10
+ **Novidades:**
11
+
12
+ - `meds.respond(id, { defense, evidence })`: responde um MED com a defesa e até 5 provas (em base64), num pedido só. Precisa da permissão `/meds/respond` na chave.
13
+ - O endereço padrão passa a ser `https://api.wyzecash.com.br`. O antigo continua funcionando, e quem passa `baseUrl` não muda nada.
14
+ - `payments.retrieve` e `withdrawals.retrieve` explicam no editor que, para saber quando a cobrança é paga ou o saque conclui, o caminho é o webhook (ou o WebSocket), não a consulta em sequência, que gasta o limite de 100 pedidos por minuto da conta. O README ganhou a seção "Saber quando foi pago".
15
+
16
+ ## 0.1.0
17
+
18
+ Primeira versão.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # wyzecash
2
2
 
3
- SDK oficial da [WyzeCash](https://bukio.mintlify.app) para Node.js 20+, Bun e Deno: cobranças por Pix, cartão e cripto, links de pagamento, saldo e extrato, saques, Pix enviado, estornos, MED, subcontas e webhooks. Sem dependências.
3
+ SDK oficial da [WyzeCash](https://docs.wyzecash.com.br) para Node.js 20+, Bun e Deno: cobranças por Pix, cartão e cripto, links de pagamento, saldo e extrato, saques, estornos, MED, subcontas e webhooks. Sem dependências.
4
4
 
5
5
  ```bash
6
6
  npm install wyzecash
@@ -38,8 +38,7 @@ Não existe ambiente de testes: todo pedido é de verdade. Para testar, faça um
38
38
  | `transactions` | `list`, `retrieve` |
39
39
  | `search` | `query` |
40
40
  | `receipts` | `retrieve` |
41
- | `meds` | `list`, `retrieve`, `downloadAttachment` |
42
- | `pix` | `send`, `list`, `retrieve` |
41
+ | `meds` | `list`, `retrieve`, `respond` |
43
42
  | `withdrawals` | `create`, `list`, `retrieve` |
44
43
  | `refunds` | `create`, `list`, `retrieve` |
45
44
  | `subaccounts` | `create`, `list`, `retrieve`, `update`, `delete`, `retrieveSettings`, `updateSettings`, `previewSettings`, `listEntries`, `fund`, `transfer`, `returnToAccount`, `withdraw` |
@@ -90,6 +89,17 @@ try {
90
89
 
91
90
  Opções do cliente: `new WyzeCash(chave, { maxRetries: 2, timeout: 60000, baseUrl, fetch })`.
92
91
 
92
+ ## Saber quando foi pago
93
+
94
+ **Use os webhooks ou o tempo real (WebSocket), não `payments.retrieve` em sequência.**
95
+
96
+ Chamar a consulta da cobrança em sequência para ver se ela foi paga gasta o limite de **100 pedidos por minuto da conta** (somando todas as rotas e todas as chaves). Uma tela consultando a cada 2 segundos gasta 30 por minuto; com quatro abertas, **todo** pedido da conta, até criar cobrança, volta `429 RATE_LIMITED` até liberar. Os avisos do webhook e do WebSocket não contam no limite.
97
+
98
+ - O seu sistema tem um endereço HTTPS: use os [webhooks](#webhooks) (`payment.paid`, `payment.expired`, `withdrawal.completed`...).
99
+ - Não tem (bot de Discord ou Telegram, programa num VPS): use o [tempo real](#tempo-real-websocket), de todas as cobranças ou só de uma (`ws.subscribePayment("BKY-…")`).
100
+ - A tela de "aguardando pagamento" pergunta ao **seu** servidor (que o webhook ou o WebSocket atualizou), nunca direto à WyzeCash: a chave de API não vai para o navegador nem para o app.
101
+ - `payments.retrieve` só para conferir uma vez (o webhook não chegou em alguns minutos). Sem webhook nem WebSocket, consulte no máximo a cada 5 segundos e pare na primeira situação final (`paid`, `expired` ou `refunded`).
102
+
93
103
  ## Webhooks
94
104
 
95
105
  Cada aviso chega com o cabeçalho `X-Bukio-Signature`. Confira sempre com o corpo cru, como chegou:
@@ -149,4 +159,4 @@ ws.on("error", (erro) => console.error(erro.code, erro.message));
149
159
 
150
160
  ## Documentação
151
161
 
152
- Referência completa da API: https://bukio.mintlify.app
162
+ Referência completa da API: https://docs.wyzecash.com.br
package/dist/client.d.ts CHANGED
@@ -3,7 +3,7 @@ import { type OperationId, Resources } from "./generated.js";
3
3
  import { ListPromise } from "./pagination.js";
4
4
  import { RealtimeConnection, type RealtimeOptions } from "./realtime.js";
5
5
  import { Webhooks } from "./webhooks.js";
6
- export declare const DEFAULT_BASE_URL = "https://bukio-backend-production.up.railway.app";
6
+ export declare const DEFAULT_BASE_URL = "https://api.wyzecash.com.br";
7
7
  export interface ClientOptions {
8
8
  /** A chave de API (`bk_live_…`). Sem ela, vale a variável de ambiente `WYZECASH_API_KEY`. */
9
9
  apiKey?: string;
package/dist/client.js CHANGED
@@ -11,7 +11,7 @@ import { ListPromise } from "./pagination.js";
11
11
  import { RealtimeConnection } from "./realtime.js";
12
12
  import { VERSION } from "./version.js";
13
13
  import { Webhooks } from "./webhooks.js";
14
- export const DEFAULT_BASE_URL = "https://bukio-backend-production.up.railway.app";
14
+ export const DEFAULT_BASE_URL = "https://api.wyzecash.com.br";
15
15
  const env = (name) => globalThis.process?.env?.[name];
16
16
  const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
17
17
  export class WyzeCash extends Resources {
@@ -1362,153 +1362,74 @@ export type MedsRetrieveResponse = {
1362
1362
  /** Quando foi criado. */
1363
1363
  createdAt: string;
1364
1364
  };
1365
- /** Pedido de `pix.send` (Enviar Pix). */
1366
- export type PixSendParams = {
1367
- /** Valor do Pix, em centavos. Com Copia e Cola que já tem valor, pode ficar sem ou precisa ser o mesmo. */
1368
- amount?: number;
1369
- /** Para onde vai o Pix. */
1370
- destination?: {
1371
- /** Tipo da chave Pix: `cpf`, `cnpj`, `email`, `phone` ou `random`. */
1372
- keyType: "cpf" | "cnpj" | "email" | "phone" | "random";
1373
- /** A chave Pix. */
1374
- key: string;
1375
- };
1376
- /** Pix Copia e Cola estático para pagar (no lugar de `destination`). */
1377
- copyPaste?: string;
1378
- /** A sua referência (ex.: o número do pedido). Volta no Pix enviado e no webhook. */
1379
- description?: string;
1380
- };
1381
- /** Resposta de `pix.send` (Enviar Pix). */
1382
- export type PixSendResponse = {
1383
- /** Código. */
1384
- id: string;
1385
- /** `processing` (Em processamento), `completed` (Concluído), `failed` ou `rejected` (Não realizado: o valor volta ao saldo). */
1386
- status: string;
1387
- /** Valor do Pix, em centavos. Com Copia e Cola que já tem valor, pode ficar sem ou precisa ser o mesmo. */
1388
- amount: number;
1389
- /** Tarifa, em centavos. */
1390
- fee: number;
1391
- /** O que sai no total (valor + tarifa), em centavos. */
1392
- total: number;
1393
- /** De onde foi pedido: `painel`, `app`, `api` ou `auto` (saque automático). */
1394
- channel: string;
1395
- /** A sua referência (ex.: o número do pedido). Volta no Pix enviado e no webhook. */
1396
- description: string | null;
1397
- /** Para onde vai o Pix. */
1398
- destination: {
1399
- /** Nome de quem recebe (o que o banco confirmou). */
1400
- name: string;
1401
- /** Banco de quem recebe. */
1402
- institution: string | null;
1403
- /** Tipo da chave Pix: `cpf`, `cnpj`, `email`, `phone` ou `random`. */
1404
- keyType: string | null;
1405
- /** A chave Pix. */
1406
- key: string;
1407
- /** Pix Copia e Cola. */
1408
- copyPaste: boolean;
1409
- };
1410
- /** Identificador do Pix no Banco Central (E2E). */
1411
- endToEndId: string | null;
1412
- /** Por que não foi feito. */
1413
- failureReason: string | null;
1414
- /** Quando foi criado. */
1415
- createdAt: string;
1416
- /** Quando foi concluído. */
1417
- completedAt: string | null;
1418
- /** Link público do comprovante (imagem). `null` até concluir. */
1419
- receiptUrl: string | null;
1420
- };
1421
- /** Pedido de `pix.list` (Listar Pix enviados). */
1422
- export type PixListParams = {
1423
- /** Quantos por página (até 100). */
1424
- limit?: number;
1425
- /** O `nextCursor` da página anterior. */
1426
- cursor?: string;
1427
- };
1428
- /** Resposta de `pix.list` (Listar Pix enviados). */
1429
- export type PixListResponse = {
1430
- /** Os itens desta página. */
1431
- items: Array<{
1432
- /** Código. */
1433
- id: string;
1434
- /** Situação. */
1435
- status: string;
1436
- /** Valor, em centavos. */
1437
- amount: number;
1438
- /** Tarifa, em centavos. */
1439
- fee: number;
1440
- /** O que sai no total (valor + tarifa), em centavos. */
1441
- total: number;
1442
- /** De onde foi pedido: `painel`, `app`, `api` ou `auto` (saque automático). */
1443
- channel: string;
1444
- /** Descrição. */
1445
- description: string | null;
1446
- /** Para onde vai o Pix. */
1447
- destination: {
1448
- /** Nome de quem recebe (o que o banco confirmou). */
1449
- name: string;
1450
- /** Banco de quem recebe. */
1451
- institution: string;
1452
- /** Tipo da chave Pix: `cpf`, `cnpj`, `email`, `phone` ou `random`. */
1453
- keyType: string;
1454
- /** A chave Pix. */
1455
- key: string;
1456
- /** Pix Copia e Cola. */
1457
- copyPaste: boolean;
1458
- };
1459
- /** Identificador do Pix no Banco Central (E2E). */
1460
- endToEndId: string;
1461
- /** Por que não foi feito. */
1462
- failureReason: string | null;
1463
- /** Quando foi criado. */
1464
- createdAt: string;
1465
- /** Quando foi concluído. */
1466
- completedAt: string;
1467
- /** Link público do comprovante (imagem). `null` até concluir. */
1468
- receiptUrl: string;
1365
+ /** Pedido de `meds.respond` (Responder MED). */
1366
+ export type MedsRespondParams = {
1367
+ /** A defesa que você escreveu (a automática nunca aparece). */
1368
+ defense: string;
1369
+ evidence?: Array<{
1370
+ fileName?: string;
1371
+ contentBase64: string;
1469
1372
  }>;
1470
- /** Cursor da próxima página (`null` no fim). Mande em `cursor`. */
1471
- nextCursor: string | null;
1472
1373
  };
1473
- /** Resposta de `pix.retrieve` (Consultar Pix enviado). */
1474
- export type PixRetrieveResponse = {
1374
+ /** Resposta de `meds.respond` (Responder MED). */
1375
+ export type MedsRespondResponse = {
1475
1376
  /** Código. */
1476
1377
  id: string;
1477
- /** `processing` (Em processamento), `completed` (Concluído), `failed` ou `rejected` (Não realizado: o valor volta ao saldo). */
1378
+ /** A venda paga em que o MED foi aberto. */
1379
+ original: unknown;
1380
+ /** Situação. */
1478
1381
  status: string;
1382
+ /** Situação em texto, como aparece no painel. */
1383
+ statusTitle: string;
1479
1384
  /** Valor, em centavos. */
1480
1385
  amount: number;
1386
+ /** Reservado (MED ou estorno em andamento), em centavos. */
1387
+ blocked: number;
1388
+ /** O que ficou faltando quando foi devolvido sem saldo, em centavos. */
1389
+ owed: number;
1481
1390
  /** Tarifa, em centavos. */
1482
1391
  fee: number;
1483
- /** O que sai no total (valor + tarifa), em centavos. */
1484
- total: number;
1485
- /** De onde foi pedido: `painel`, `app`, `api` ou `auto` (saque automático). */
1486
- channel: string;
1392
+ /** Taxa de MED recebido, em centavos. */
1393
+ receivedFee: number;
1394
+ /** Parte da Taxa de MED recebido que ficou para as próximas entradas, em centavos. */
1395
+ receivedFeeOwed: number;
1396
+ /** Motivo. */
1397
+ reason: string;
1398
+ /** Motivo em texto. */
1399
+ reasonTitle: string;
1487
1400
  /** Descrição. */
1488
1401
  description: string | null;
1489
- /** Para onde vai o Pix. */
1490
- destination: {
1491
- /** Nome de quem recebe (o que o banco confirmou). */
1402
+ /** Prazo para responder. */
1403
+ deadline: string;
1404
+ /** A defesa que você escreveu (a automática nunca aparece). */
1405
+ defense: string;
1406
+ /** Quem respondeu: `user` (você), `auto` (defesa automática) ou `null`. */
1407
+ answered: string;
1408
+ /** Quando foi respondido. */
1409
+ answeredAt: string;
1410
+ /** Origem da defesa: `user` ou `auto`. */
1411
+ defenseSource: string;
1412
+ /** Arquivos enviados como prova. */
1413
+ attachments: Array<{
1414
+ /** Código do anexo. */
1415
+ id: string;
1416
+ /** Nome do arquivo. */
1492
1417
  name: string;
1493
- /** Banco de quem recebe. */
1494
- institution: string;
1495
- /** Tipo da chave Pix: `cpf`, `cnpj`, `email`, `phone` ou `random`. */
1496
- keyType: string;
1497
- /** A chave Pix. */
1498
- key: string;
1499
- /** Pix Copia e Cola. */
1500
- copyPaste: boolean;
1501
- };
1502
- /** Identificador do Pix no Banco Central (E2E). */
1503
- endToEndId: string | null;
1504
- /** Por que não foi feito. */
1505
- failureReason: string | null;
1418
+ /** Tamanho, em bytes. */
1419
+ size: number;
1420
+ /** Tipo do arquivo. */
1421
+ contentType: string;
1422
+ /** Quando foi criado. */
1423
+ createdAt: string;
1424
+ }>;
1425
+ /** Observação da decisão. */
1426
+ decisionNote: string | null;
1427
+ /** Quando a defesa foi enviada. */
1428
+ defenseAt: string;
1429
+ /** Quando foi decidido. */
1430
+ decidedAt: unknown;
1506
1431
  /** Quando foi criado. */
1507
1432
  createdAt: string;
1508
- /** Quando foi concluído. */
1509
- completedAt: string | null;
1510
- /** Link público do comprovante (imagem). `null` até concluir. */
1511
- receiptUrl: string | null;
1512
1433
  };
1513
1434
  /** Pedido de `withdrawals.create` (Sacar). */
1514
1435
  export type WithdrawalsCreateParams = {
@@ -1901,6 +1822,8 @@ export type SubaccountsCreateResponse = {
1901
1822
  active: boolean;
1902
1823
  /** Bloqueio: `none`, `receive` (não recebe), `withdraw` (não saca) ou `full` (bloqueio total). Devolver à principal sempre vale. */
1903
1824
  lockMode: string;
1825
+ /** Bloqueio da WyzeCash: `none`, `receive` (não recebe), `withdraw` (não saca, não transfere, não devolve à principal e não é excluída) ou `full` (os dois). Vale por cima do `lockMode` e só a WyzeCash tira. */
1826
+ platformLock: string;
1904
1827
  /** Saque travado pelo bloqueio automático do MED. */
1905
1828
  medLocked: boolean;
1906
1829
  /** O que falta reservar ou pagar do MED, em centavos (sai das próximas entradas da subconta). */
@@ -1996,6 +1919,8 @@ export type SubaccountsListResponse = {
1996
1919
  active: boolean;
1997
1920
  /** Bloqueio: `none`, `receive` (não recebe), `withdraw` (não saca) ou `full` (bloqueio total). Devolver à principal sempre vale. */
1998
1921
  lockMode: string;
1922
+ /** Bloqueio da WyzeCash: `none`, `receive` (não recebe), `withdraw` (não saca, não transfere, não devolve à principal e não é excluída) ou `full` (os dois). Vale por cima do `lockMode` e só a WyzeCash tira. */
1923
+ platformLock: string;
1999
1924
  /** Saque travado pelo bloqueio automático do MED. */
2000
1925
  medLocked: boolean;
2001
1926
  /** O que falta reservar ou pagar do MED, em centavos (sai das próximas entradas da subconta). */
@@ -2083,6 +2008,8 @@ export type SubaccountsRetrieveResponse = {
2083
2008
  active?: boolean;
2084
2009
  /** Bloqueio: `none`, `receive` (não recebe), `withdraw` (não saca) ou `full` (bloqueio total). Devolver à principal sempre vale. */
2085
2010
  lockMode?: string;
2011
+ /** Bloqueio da WyzeCash: `none`, `receive` (não recebe), `withdraw` (não saca, não transfere, não devolve à principal e não é excluída) ou `full` (os dois). Vale por cima do `lockMode` e só a WyzeCash tira. */
2012
+ platformLock?: string;
2086
2013
  /** Saque travado pelo bloqueio automático do MED. */
2087
2014
  medLocked?: boolean;
2088
2015
  /** O que falta reservar ou pagar do MED, em centavos (sai das próximas entradas da subconta). */
@@ -2246,6 +2173,8 @@ export type SubaccountsUpdateResponse = {
2246
2173
  active: boolean;
2247
2174
  /** Bloqueio: `none`, `receive` (não recebe), `withdraw` (não saca) ou `full` (bloqueio total). Devolver à principal sempre vale. */
2248
2175
  lockMode: string;
2176
+ /** Bloqueio da WyzeCash: `none`, `receive` (não recebe), `withdraw` (não saca, não transfere, não devolve à principal e não é excluída) ou `full` (os dois). Vale por cima do `lockMode` e só a WyzeCash tira. */
2177
+ platformLock: string;
2249
2178
  /** Saque travado pelo bloqueio automático do MED. */
2250
2179
  medLocked: boolean;
2251
2180
  /** O que falta reservar ou pagar do MED, em centavos (sai das próximas entradas da subconta). */
@@ -2951,38 +2880,11 @@ export declare const OPERATIONS: {
2951
2880
  readonly moneyOut: false;
2952
2881
  readonly binary: false;
2953
2882
  };
2954
- readonly baixar_prova_med: {
2955
- readonly method: "GET";
2956
- readonly path: "/v1/meds/{id}/attachments/{attachmentId}";
2957
- readonly query: readonly [];
2958
- readonly body: false;
2959
- readonly idempotent: false;
2960
- readonly moneyOut: false;
2961
- readonly binary: true;
2962
- };
2963
- readonly enviar_pix: {
2883
+ readonly responder_med: {
2964
2884
  readonly method: "POST";
2965
- readonly path: "/v1/pix/payments";
2885
+ readonly path: "/v1/meds/{id}/respond";
2966
2886
  readonly query: readonly [];
2967
2887
  readonly body: true;
2968
- readonly idempotent: true;
2969
- readonly moneyOut: true;
2970
- readonly binary: false;
2971
- };
2972
- readonly listar_pix_enviados: {
2973
- readonly method: "GET";
2974
- readonly path: "/v1/pix/payments";
2975
- readonly query: readonly ["limit", "cursor"];
2976
- readonly body: false;
2977
- readonly idempotent: false;
2978
- readonly moneyOut: false;
2979
- readonly binary: false;
2980
- };
2981
- readonly consultar_pix_enviado: {
2982
- readonly method: "GET";
2983
- readonly path: "/v1/pix/payments/{id}";
2984
- readonly query: readonly [];
2985
- readonly body: false;
2986
2888
  readonly idempotent: false;
2987
2889
  readonly moneyOut: false;
2988
2890
  readonly binary: false;
@@ -3211,6 +3113,8 @@ export declare class PaymentsResource {
3211
3113
  *
3212
3114
  * **Permissão da chave:** `payments:get`.
3213
3115
  *
3116
+ * - Para saber quando é paga, use o webhook `payment.paid` (ou o WebSocket `/v1/ws`), não esta consulta em sequência: cada consulta conta no limite de 100 pedidos por minuto da conta e o excesso volta 429. Consulte uma vez para conferir.
3117
+ *
3214
3118
  * `GET /v1/payments/{id}`
3215
3119
  */
3216
3120
  retrieve(id: string, options?: RequestOptions): Promise<PaymentsRetrieveResponse>;
@@ -3466,56 +3370,19 @@ export declare class MedsResource {
3466
3370
  */
3467
3371
  retrieve(id: string, options?: RequestOptions): Promise<MedsRetrieveResponse>;
3468
3372
  /**
3469
- * Baixar uma prova do MED
3373
+ * Responder MED
3470
3374
  *
3471
- * Baixa uma prova anexada à defesa de um MED (o arquivo, como anexo).
3375
+ * Manda a defesa de um MED aberto (`defense`, de 20 a 4.000 caracteres, explicando a venda e a entrega) com até 5 provas em `evidence` (imagem JPG, PNG ou WEBP ou PDF, em base64 em `contentBase64`, até 5 MB cada). A WyzeCash leva a defesa e as provas ao banco de quem pagou; depois disso o MED segue a situação de sempre.
3472
3376
  *
3473
- * **Permissão da chave:** `meds:evidence`.
3377
+ * **Permissão da chave:** `meds:respond`.
3474
3378
  *
3475
- * `GET /v1/meds/{id}/attachments/{attachmentId}`
3476
- */
3477
- downloadAttachment(id: string, attachmentId: string, options?: RequestOptions): Promise<ArrayBuffer>;
3478
- }
3479
- export declare class PixResource {
3480
- private readonly client;
3481
- constructor(client: Requester);
3482
- /**
3483
- * Enviar Pix
3484
- *
3485
- * Envia um Pix (ENV-) para uma chave (`destination`) ou paga um Pix Copia e Cola (`copyPaste`).
3486
- *
3487
- * **Permissão da chave:** `pix:create`.
3488
- *
3489
- * Pede o cabeçalho `Idempotency-Key`.
3490
- *
3491
- * **Tira dinheiro da conta de verdade.**
3379
+ * - Só com o MED `open` e dentro do prazo (`deadline`): depois, `409 MED_NOT_OPEN` ou `409 MED_DEADLINE_PASSED`. Uma resposta por MED.
3380
+ * - As provas não voltam para baixar: ficam guardadas com a WyzeCash e só vão para o banco de quem pagou.
3381
+ * - O MCP não manda a defesa: só mostra como o seu sistema faz.
3492
3382
  *
3493
- * - A chave com `pix:create` só é criada com o 2FA ligado na conta e o código do app autenticador.
3494
- * - A resposta vem `processing` até concluir; o webhook `pix.sent` (com `receiptUrl`) ou `pix.failed` avisa o resultado.
3495
- *
3496
- * `POST /v1/pix/payments`
3497
- */
3498
- send(params?: PixSendParams, options?: RequestOptions): Promise<PixSendResponse>;
3499
- /**
3500
- * Listar Pix enviados
3501
- *
3502
- * Os Pix enviados (concluído traz o `receiptUrl`).
3503
- *
3504
- * **Permissão da chave:** `pix:list`.
3505
- *
3506
- * `GET /v1/pix/payments`
3383
+ * `POST /v1/meds/{id}/respond`
3507
3384
  */
3508
- list(params?: PixListParams, options?: RequestOptions): ListPromise<PixListResponse, PixListResponse["items"][number]>;
3509
- /**
3510
- * Consultar Pix enviado
3511
- *
3512
- * Um Pix enviado pelo código ENV-.
3513
- *
3514
- * **Permissão da chave:** `pix:get`.
3515
- *
3516
- * `GET /v1/pix/payments/{id}`
3517
- */
3518
- retrieve(id: string, options?: RequestOptions): Promise<PixRetrieveResponse>;
3385
+ respond(id: string, params: MedsRespondParams, options?: RequestOptions): Promise<MedsRespondResponse>;
3519
3386
  }
3520
3387
  export declare class WithdrawalsResource {
3521
3388
  private readonly client;
@@ -3556,6 +3423,8 @@ export declare class WithdrawalsResource {
3556
3423
  *
3557
3424
  * **Permissão da chave:** `withdrawals:get`.
3558
3425
  *
3426
+ * - Para saber quando conclui, use os webhooks `withdrawal.completed` e `withdrawal.failed` (ou o WebSocket `/v1/ws`), não esta consulta em sequência: ela conta no limite de 100 pedidos por minuto da conta.
3427
+ *
3559
3428
  * `GET /v1/withdrawals/{id}`
3560
3429
  */
3561
3430
  retrieve(id: string, options?: RequestOptions): Promise<WithdrawalsRetrieveResponse>;
@@ -3777,7 +3646,6 @@ export declare abstract class Resources {
3777
3646
  readonly search: SearchResource;
3778
3647
  readonly receipts: ReceiptsResource;
3779
3648
  readonly meds: MedsResource;
3780
- readonly pix: PixResource;
3781
3649
  readonly withdrawals: WithdrawalsResource;
3782
3650
  readonly refunds: RefundsResource;
3783
3651
  readonly subaccounts: SubaccountsResource;
package/dist/generated.js CHANGED
@@ -26,10 +26,7 @@ export const OPERATIONS = {
26
26
  comprovante: { method: "GET", path: "/v1/receipts/{id}", query: [], body: false, idempotent: false, moneyOut: false, binary: false },
27
27
  listar_meds: { method: "GET", path: "/v1/meds", query: ["limit", "cursor", "status"], body: false, idempotent: false, moneyOut: false, binary: false },
28
28
  consultar_med: { method: "GET", path: "/v1/meds/{id}", query: [], body: false, idempotent: false, moneyOut: false, binary: false },
29
- baixar_prova_med: { method: "GET", path: "/v1/meds/{id}/attachments/{attachmentId}", query: [], body: false, idempotent: false, moneyOut: false, binary: true },
30
- enviar_pix: { method: "POST", path: "/v1/pix/payments", query: [], body: true, idempotent: true, moneyOut: true, binary: false },
31
- listar_pix_enviados: { method: "GET", path: "/v1/pix/payments", query: ["limit", "cursor"], body: false, idempotent: false, moneyOut: false, binary: false },
32
- consultar_pix_enviado: { method: "GET", path: "/v1/pix/payments/{id}", query: [], body: false, idempotent: false, moneyOut: false, binary: false },
29
+ responder_med: { method: "POST", path: "/v1/meds/{id}/respond", query: [], body: true, idempotent: false, moneyOut: false, binary: false },
33
30
  criar_saque: { method: "POST", path: "/v1/withdrawals", query: [], body: true, idempotent: true, moneyOut: true, binary: false },
34
31
  listar_saques: { method: "GET", path: "/v1/withdrawals", query: ["limit", "cursor", "subaccountId"], body: false, idempotent: false, moneyOut: false, binary: false },
35
32
  consultar_saque: { method: "GET", path: "/v1/withdrawals/{id}", query: [], body: false, idempotent: false, moneyOut: false, binary: false },
@@ -109,6 +106,8 @@ export class PaymentsResource {
109
106
  *
110
107
  * **Permissão da chave:** `payments:get`.
111
108
  *
109
+ * - Para saber quando é paga, use o webhook `payment.paid` (ou o WebSocket `/v1/ws`), não esta consulta em sequência: cada consulta conta no limite de 100 pedidos por minuto da conta e o excesso volta 429. Consulte uma vez para conferir.
110
+ *
112
111
  * `GET /v1/payments/{id}`
113
112
  */
114
113
  retrieve(id, options) {
@@ -426,65 +425,20 @@ export class MedsResource {
426
425
  return this.client.request("consultar_med", [id], undefined, options);
427
426
  }
428
427
  /**
429
- * Baixar uma prova do MED
430
- *
431
- * Baixa uma prova anexada à defesa de um MED (o arquivo, como anexo).
432
- *
433
- * **Permissão da chave:** `meds:evidence`.
434
- *
435
- * `GET /v1/meds/{id}/attachments/{attachmentId}`
436
- */
437
- downloadAttachment(id, attachmentId, options) {
438
- return this.client.request("baixar_prova_med", [id, attachmentId], undefined, options);
439
- }
440
- }
441
- export class PixResource {
442
- client;
443
- constructor(client) {
444
- this.client = client;
445
- }
446
- /**
447
- * Enviar Pix
428
+ * Responder MED
448
429
  *
449
- * Envia um Pix (ENV-) para uma chave (`destination`) ou paga um Pix Copia e Cola (`copyPaste`).
430
+ * Manda a defesa de um MED aberto (`defense`, de 20 a 4.000 caracteres, explicando a venda e a entrega) com até 5 provas em `evidence` (imagem JPG, PNG ou WEBP ou PDF, em base64 em `contentBase64`, até 5 MB cada). A WyzeCash leva a defesa e as provas ao banco de quem pagou; depois disso o MED segue a situação de sempre.
450
431
  *
451
- * **Permissão da chave:** `pix:create`.
452
- *
453
- * Pede o cabeçalho `Idempotency-Key`.
454
- *
455
- * **Tira dinheiro da conta de verdade.**
432
+ * **Permissão da chave:** `meds:respond`.
456
433
  *
457
- * - A chave com `pix:create` só é criada com o 2FA ligado na conta e o código do app autenticador.
458
- * - A resposta vem `processing` até concluir; o webhook `pix.sent` (com `receiptUrl`) ou `pix.failed` avisa o resultado.
434
+ * - Só com o MED `open` e dentro do prazo (`deadline`): depois, `409 MED_NOT_OPEN` ou `409 MED_DEADLINE_PASSED`. Uma resposta por MED.
435
+ * - As provas não voltam para baixar: ficam guardadas com a WyzeCash e só vão para o banco de quem pagou.
436
+ * - O MCP não manda a defesa: só mostra como o seu sistema faz.
459
437
  *
460
- * `POST /v1/pix/payments`
438
+ * `POST /v1/meds/{id}/respond`
461
439
  */
462
- send(params, options) {
463
- return this.client.request("enviar_pix", [], params, options);
464
- }
465
- /**
466
- * Listar Pix enviados
467
- *
468
- * Os Pix enviados (concluído traz o `receiptUrl`).
469
- *
470
- * **Permissão da chave:** `pix:list`.
471
- *
472
- * `GET /v1/pix/payments`
473
- */
474
- list(params, options) {
475
- return this.client.list("listar_pix_enviados", [], params, options);
476
- }
477
- /**
478
- * Consultar Pix enviado
479
- *
480
- * Um Pix enviado pelo código ENV-.
481
- *
482
- * **Permissão da chave:** `pix:get`.
483
- *
484
- * `GET /v1/pix/payments/{id}`
485
- */
486
- retrieve(id, options) {
487
- return this.client.request("consultar_pix_enviado", [id], undefined, options);
440
+ respond(id, params, options) {
441
+ return this.client.request("responder_med", [id], params, options);
488
442
  }
489
443
  }
490
444
  export class WithdrawalsResource {
@@ -532,6 +486,8 @@ export class WithdrawalsResource {
532
486
  *
533
487
  * **Permissão da chave:** `withdrawals:get`.
534
488
  *
489
+ * - Para saber quando conclui, use os webhooks `withdrawal.completed` e `withdrawal.failed` (ou o WebSocket `/v1/ws`), não esta consulta em sequência: ela conta no limite de 100 pedidos por minuto da conta.
490
+ *
535
491
  * `GET /v1/withdrawals/{id}`
536
492
  */
537
493
  retrieve(id, options) {
@@ -791,7 +747,6 @@ export class Resources {
791
747
  search;
792
748
  receipts;
793
749
  meds;
794
- pix;
795
750
  withdrawals;
796
751
  refunds;
797
752
  subaccounts;
@@ -807,7 +762,6 @@ export class Resources {
807
762
  this.search = new SearchResource(client);
808
763
  this.receipts = new ReceiptsResource(client);
809
764
  this.meds = new MedsResource(client);
810
- this.pix = new PixResource(client);
811
765
  this.withdrawals = new WithdrawalsResource(client);
812
766
  this.refunds = new RefundsResource(client);
813
767
  this.subaccounts = new SubaccountsResource(client);
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "0.1.0";
1
+ export declare const VERSION = "0.2.0";
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- export const VERSION = "0.1.0";
1
+ export const VERSION = "0.2.0";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wyzecash",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "SDK oficial da WyzeCash para Node.js, Bun e Deno: cobranças por Pix, cartão e cripto, saques, subcontas e webhooks (com plugin para o Fastify).",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -17,7 +17,7 @@
17
17
  },
18
18
  "./package.json": "./package.json"
19
19
  },
20
- "files": ["dist", "README.md", "LICENSE"],
20
+ "files": ["dist", "README.md", "CHANGELOG.md", "LICENSE"],
21
21
  "sideEffects": false,
22
22
  "engines": {
23
23
  "node": ">=20"