@devix-tecnologia/zapsign-client 0.0.0-stage → 0.4.4
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/LICENSE +21 -0
- package/README.md +136 -2
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/zapsign-client/index.d.ts +3 -0
- package/dist/zapsign-client/index.d.ts.map +1 -0
- package/dist/zapsign-client/index.js +2 -0
- package/dist/zapsign-client/index.js.map +1 -0
- package/dist/zapsign-client/zapsign-client.d.ts +21 -0
- package/dist/zapsign-client/zapsign-client.d.ts.map +1 -0
- package/dist/zapsign-client/zapsign-client.js +114 -0
- package/dist/zapsign-client/zapsign-client.js.map +1 -0
- package/dist/zapsign-client/zapsign-client.types.d.ts +38 -0
- package/dist/zapsign-client/zapsign-client.types.d.ts.map +1 -0
- package/dist/zapsign-client/zapsign-client.types.js +2 -0
- package/dist/zapsign-client/zapsign-client.types.js.map +1 -0
- package/package.json +48 -3
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024-2026 Devix Tecnologia Ltda
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,137 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @devix-tecnologia/zapsign-client
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Cliente [ZapSign](https://zapsign.com.br) implementando a interface
|
|
4
|
+
`IProvedorAssinatura` do pacote `@devix-tecnologia/assinatura-eletronica`.
|
|
5
|
+
|
|
6
|
+
## Instalação
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
pnpm add @devix-tecnologia/zapsign-client
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Configuração
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
import { ZapsignClient } from '@devix-tecnologia/zapsign-client';
|
|
16
|
+
|
|
17
|
+
const client = new ZapsignClient({
|
|
18
|
+
apiToken: process.env.ZAPSIGN_TOKEN!, // obrigatório
|
|
19
|
+
sandbox: true, // default: true
|
|
20
|
+
baseUrl: 'https://proxy.interno/api/v1/docs/', // opcional: vence sandbox
|
|
21
|
+
folderPath: '/contratos', // opcional
|
|
22
|
+
brandPrimaryColor: '#000000', // opcional: default #000000
|
|
23
|
+
authMode: 'assinaturaTela', // opcional: default assinaturaTela
|
|
24
|
+
});
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
| Parâmetro | Tipo | Default | Descrição |
|
|
28
|
+
| ------------------- | ---------- | ---------------- | -------------------------------------------------- |
|
|
29
|
+
| `apiToken` | `string` | — | Token de autenticação da API ZapSign |
|
|
30
|
+
| `sandbox` | `boolean` | `true` | Ambiente de testes |
|
|
31
|
+
| `baseUrl` | `string` | — | URL base customizada (ex.: proxy). Vence `sandbox` |
|
|
32
|
+
| `folderPath` | `string` | — | Pasta no ZapSign onde os docs são criados |
|
|
33
|
+
| `brandPrimaryColor` | `string` | `#000000` | Cor da marca no fluxo de assinatura |
|
|
34
|
+
| `authMode` | `AuthMode` | `assinaturaTela` | Modo de autenticação padrão |
|
|
35
|
+
|
|
36
|
+
## Uso
|
|
37
|
+
|
|
38
|
+
Enviar um documento para assinatura:
|
|
39
|
+
|
|
40
|
+
```typescript
|
|
41
|
+
const resultado = await client.enviarParaAssinatura({
|
|
42
|
+
pdfBase64: 'dGVzdGU=...',
|
|
43
|
+
signatarios: [{ nome: 'João Silva', email: 'joao@teste.com' }],
|
|
44
|
+
nome: 'Contrato',
|
|
45
|
+
dataLimite: '2026-12-31', // opcional
|
|
46
|
+
sandbox: true,
|
|
47
|
+
idExterno: 'contrato_123',
|
|
48
|
+
sendAutomaticEmail: true, // opcional: envio automático de e-mail
|
|
49
|
+
sendAutomaticWhatsapp: false, // opcional: envio automático de WhatsApp
|
|
50
|
+
requireSelfie: false, // opcional: exige selfie do signatário
|
|
51
|
+
requireDocumentPhoto: false, // opcional: exige foto do documento
|
|
52
|
+
});
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Consultar detalhes e cancelar:
|
|
56
|
+
|
|
57
|
+
```typescript
|
|
58
|
+
const detalhes = await client.obterDetalhes('doc-token-123');
|
|
59
|
+
// { status: 'signed', originalFileUrl: '...', signedFileUrl: '...' }
|
|
60
|
+
|
|
61
|
+
await client.cancelarDocumento('doc-token-123');
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Overrides por signatário
|
|
65
|
+
|
|
66
|
+
Campos como `sendAutomaticEmail`, `authMode`, `requireSelfie` podem ser
|
|
67
|
+
definidos por signatário (vence o nível-documento):
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
signatarios: [
|
|
71
|
+
{
|
|
72
|
+
nome: 'Usuário Automático',
|
|
73
|
+
email: 'auto@exemplo.com',
|
|
74
|
+
sendAutomaticEmail: false, // não envia convite
|
|
75
|
+
lockEmail: false,
|
|
76
|
+
authMode: 'assinaturaTela',
|
|
77
|
+
requireSelfie: true,
|
|
78
|
+
requireDocumentPhoto: true,
|
|
79
|
+
lockPhone: true,
|
|
80
|
+
sendAutomaticWhatsapp: true,
|
|
81
|
+
},
|
|
82
|
+
{ nome: 'Representante', email: 'rep@exemplo.com' }, // herda do documento
|
|
83
|
+
],
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Assinatura automática (operador assina pelo signatário)
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
await client.assinarAutomaticamente(
|
|
90
|
+
['signer-token-1', 'signer-token-2'], // tokens dos signatários
|
|
91
|
+
'user-token-9' // token do operador
|
|
92
|
+
);
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Normalização de webhooks
|
|
96
|
+
|
|
97
|
+
```typescript
|
|
98
|
+
const evento = client.normalizarWebhook({
|
|
99
|
+
event_type: 'doc_signed',
|
|
100
|
+
status: 'signed',
|
|
101
|
+
token: 'doc-token-456',
|
|
102
|
+
external_id: 'contrato_123',
|
|
103
|
+
signed_file: 'https://zapsign.com.br/doc/signed.pdf',
|
|
104
|
+
});
|
|
105
|
+
// { tipo: 'documento_finalizado', provedorDocId: 'doc-token-456', idExterno: 'contrato_123', signedFileUrl: '...' }
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
| Evento ZapSign | Status | `tipo` normalizado |
|
|
109
|
+
| -------------- | -------- | ---------------------- |
|
|
110
|
+
| `doc_signed` | `signed` | `documento_finalizado` |
|
|
111
|
+
| `doc_signed` | outros | `signatario_assinou` |
|
|
112
|
+
| `doc_deleted` | — | `documento_cancelado` |
|
|
113
|
+
| outros | — | `outro` |
|
|
114
|
+
|
|
115
|
+
## Uso com o orquestrador
|
|
116
|
+
|
|
117
|
+
```typescript
|
|
118
|
+
import {
|
|
119
|
+
AssinaturaOrquestrador,
|
|
120
|
+
criarObserverPadrao,
|
|
121
|
+
} from '@devix-tecnologia/assinatura-eletronica';
|
|
122
|
+
import { ZapsignClient } from '@devix-tecnologia/zapsign-client';
|
|
123
|
+
|
|
124
|
+
const orquestrador = new AssinaturaOrquestrador(
|
|
125
|
+
new ZapsignClient({ apiToken: process.env.ZAPSIGN_TOKEN!, sandbox: true }),
|
|
126
|
+
undefined,
|
|
127
|
+
criarObserverPadrao(console)
|
|
128
|
+
);
|
|
129
|
+
|
|
130
|
+
const resultado = await orquestrador.enviarParaAssinatura({
|
|
131
|
+
/* ... */
|
|
132
|
+
});
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Licença
|
|
136
|
+
|
|
137
|
+
MIT. Ver [LICENSE](./LICENSE).
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/zapsign-client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/zapsign-client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { DetalhesDocumento, DocumentoParaAssinar, EventoAssinatura, IProvedorAssinatura, ResultadoEnvio } from '@devix-tecnologia/assinatura-eletronica';
|
|
2
|
+
import type { ZapsignConfig, ZapsignSignResponse } from './zapsign-client.types.js';
|
|
3
|
+
export declare class ZapsignClient implements IProvedorAssinatura {
|
|
4
|
+
private baseURL;
|
|
5
|
+
private apiToken;
|
|
6
|
+
private folderPath?;
|
|
7
|
+
private brandPrimaryColor;
|
|
8
|
+
private authMode;
|
|
9
|
+
constructor(config: ZapsignConfig);
|
|
10
|
+
enviarParaAssinatura(documento: DocumentoParaAssinar): Promise<ResultadoEnvio>;
|
|
11
|
+
obterDetalhes(idDoc: string): Promise<DetalhesDocumento>;
|
|
12
|
+
/**
|
|
13
|
+
* Assinatura automática (task-036): um usuário da plataforma assina via API, sem fluxo de convite.
|
|
14
|
+
* POST /api/v1/sign/ com user_token (do usuário que assina) + signer_tokens (dos signatários no doc).
|
|
15
|
+
* https://docs.zapsign.com.br — operação específica do ZapSign (não faz parte de IProvedorAssinatura).
|
|
16
|
+
*/
|
|
17
|
+
assinarAutomaticamente(signerTokens: string[], userToken: string): Promise<ZapsignSignResponse>;
|
|
18
|
+
cancelarDocumento(idDoc: string): Promise<void>;
|
|
19
|
+
normalizarWebhook(payload: unknown): EventoAssinatura;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=zapsign-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zapsign-client.d.ts","sourceRoot":"","sources":["../../src/zapsign-client/zapsign-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACf,MAAM,yCAAyC,CAAC;AAEjD,OAAO,KAAK,EAEV,aAAa,EAGb,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAEnC,qBAAa,aAAc,YAAW,mBAAmB;IACvD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAW;IAE3B,YAAY,MAAM,EAAE,aAAa,EAYhC;IAEK,oBAAoB,CACxB,SAAS,EAAE,oBAAoB,GAC9B,OAAO,CAAC,cAAc,CAAC,CA6CzB;IAEK,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAa7D;IAED;;;;OAIG;IACG,sBAAsB,CAC1B,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,mBAAmB,CAAC,CAY9B;IAEK,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpD;IAED,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAyBpD;CACF"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
export class ZapsignClient {
|
|
3
|
+
baseURL;
|
|
4
|
+
apiToken;
|
|
5
|
+
folderPath;
|
|
6
|
+
brandPrimaryColor;
|
|
7
|
+
authMode;
|
|
8
|
+
constructor(config) {
|
|
9
|
+
this.apiToken = config.apiToken;
|
|
10
|
+
// baseUrl explícita (ex.: vinda de env/proxy) vence o switch por sandbox (task-036).
|
|
11
|
+
// `||` (não `??`): env vazia ('') deve cair no switch, não virar baseURL vazia.
|
|
12
|
+
this.baseURL =
|
|
13
|
+
config.baseUrl ||
|
|
14
|
+
(config.sandbox === false
|
|
15
|
+
? 'https://api.zapsign.com.br/api/v1/docs/'
|
|
16
|
+
: 'https://sandbox.api.zapsign.com.br/api/v1/docs/');
|
|
17
|
+
this.folderPath = config.folderPath;
|
|
18
|
+
this.brandPrimaryColor = config.brandPrimaryColor ?? '#000000';
|
|
19
|
+
this.authMode = config.authMode ?? 'assinaturaTela';
|
|
20
|
+
}
|
|
21
|
+
async enviarParaAssinatura(documento) {
|
|
22
|
+
const { data } = await axios.post(this.baseURL, {
|
|
23
|
+
name: documento.nome,
|
|
24
|
+
external_id: documento.idExterno,
|
|
25
|
+
base64_pdf: documento.pdfBase64,
|
|
26
|
+
sandbox: documento.sandbox,
|
|
27
|
+
...(documento.dataLimite !== undefined
|
|
28
|
+
? { date_limit_to_sign: documento.dataLimite }
|
|
29
|
+
: {}),
|
|
30
|
+
brand_primary_color: this.brandPrimaryColor,
|
|
31
|
+
...(this.folderPath !== undefined
|
|
32
|
+
? { folder_path: this.folderPath }
|
|
33
|
+
: {}),
|
|
34
|
+
// Precedência (task-036): override do SIGNATÁRIO ?? nível-DOCUMENTO ?? default.
|
|
35
|
+
signers: documento.signatarios.map((s) => ({
|
|
36
|
+
name: s.nome,
|
|
37
|
+
email: s.email,
|
|
38
|
+
send_automatic_email: s.sendAutomaticEmail ?? documento.sendAutomaticEmail ?? true,
|
|
39
|
+
send_automatic_whatsapp: s.sendAutomaticWhatsapp ?? documento.sendAutomaticWhatsapp ?? false,
|
|
40
|
+
custom_message: s.mensagemPersonalizada ?? '',
|
|
41
|
+
lock_email: s.lockEmail ?? documento.lockEmail ?? false,
|
|
42
|
+
lock_phone: s.lockPhone ?? documento.lockPhone ?? false,
|
|
43
|
+
phone_country: '55',
|
|
44
|
+
phone_number: s.telefone ?? '',
|
|
45
|
+
auth_mode: s.authMode ?? this.authMode,
|
|
46
|
+
require_selfie_photo: s.requireSelfie ?? documento.requireSelfie ?? false,
|
|
47
|
+
require_document_photo: s.requireDocumentPhoto ?? documento.requireDocumentPhoto ?? false,
|
|
48
|
+
})),
|
|
49
|
+
}, {
|
|
50
|
+
headers: { Authorization: `Bearer ${this.apiToken}` },
|
|
51
|
+
});
|
|
52
|
+
return {
|
|
53
|
+
provedorDocId: data.token,
|
|
54
|
+
linkAcompanhamento: data.signers?.[0]?.sign_url,
|
|
55
|
+
rawResponse: data,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
async obterDetalhes(idDoc) {
|
|
59
|
+
const { data } = await axios.get(`${this.baseURL}${idDoc}`, {
|
|
60
|
+
headers: { Authorization: `Bearer ${this.apiToken}` },
|
|
61
|
+
});
|
|
62
|
+
return {
|
|
63
|
+
status: data.status,
|
|
64
|
+
originalFileUrl: data.original_file,
|
|
65
|
+
signedFileUrl: data.signed_file,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Assinatura automática (task-036): um usuário da plataforma assina via API, sem fluxo de convite.
|
|
70
|
+
* POST /api/v1/sign/ com user_token (do usuário que assina) + signer_tokens (dos signatários no doc).
|
|
71
|
+
* https://docs.zapsign.com.br — operação específica do ZapSign (não faz parte de IProvedorAssinatura).
|
|
72
|
+
*/
|
|
73
|
+
async assinarAutomaticamente(signerTokens, userToken) {
|
|
74
|
+
// Deriva do sufixo docs/ para preservar prefixos de path de baseUrl custom (proxy);
|
|
75
|
+
// fallback: path absoluto na origem (bases oficiais da ZapSign).
|
|
76
|
+
const url = /docs\/?$/.test(this.baseURL)
|
|
77
|
+
? this.baseURL.replace(/docs\/?$/, 'sign/')
|
|
78
|
+
: new URL('/api/v1/sign/', this.baseURL).toString();
|
|
79
|
+
const { data } = await axios.post(url, { user_token: userToken, signer_tokens: signerTokens }, { headers: { Authorization: `Bearer ${this.apiToken}` } });
|
|
80
|
+
return data;
|
|
81
|
+
}
|
|
82
|
+
async cancelarDocumento(idDoc) {
|
|
83
|
+
await axios.delete(`${this.baseURL}${idDoc}`, {
|
|
84
|
+
headers: { Authorization: `Bearer ${this.apiToken}` },
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
normalizarWebhook(payload) {
|
|
88
|
+
// Payload real do webhook ZapSign é PLANO: { event_type, status, external_id, token, ... }.
|
|
89
|
+
const body = (payload ?? {});
|
|
90
|
+
const eventType = String(body.event_type ?? '');
|
|
91
|
+
const status = String(body.status ?? '');
|
|
92
|
+
let tipo;
|
|
93
|
+
if (eventType === 'doc_signed' && status === 'signed') {
|
|
94
|
+
tipo = 'documento_finalizado';
|
|
95
|
+
}
|
|
96
|
+
else if (eventType === 'doc_signed') {
|
|
97
|
+
tipo = 'signatario_assinou';
|
|
98
|
+
}
|
|
99
|
+
else if (eventType === 'doc_deleted') {
|
|
100
|
+
tipo = 'documento_cancelado';
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
tipo = 'outro';
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
tipo,
|
|
107
|
+
provedorDocId: String(body.token ?? ''),
|
|
108
|
+
idExterno: body.external_id ? String(body.external_id) : undefined,
|
|
109
|
+
signedFileUrl: body.signed_file ? String(body.signed_file) : undefined,
|
|
110
|
+
raw: payload,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=zapsign-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zapsign-client.js","sourceRoot":"","sources":["../../src/zapsign-client/zapsign-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Modo de autenticação do signatário (API ZapSign: auth_mode). Autocomplete para os valores mais
|
|
3
|
+
* comuns, mas aceita outros que a API do ZapSign suporte (`& {}` evita rejeitar valores válidos
|
|
4
|
+
* não listados aqui — não temos o enum fechado autoritativo da API).
|
|
5
|
+
*/
|
|
6
|
+
export type AuthMode = 'assinaturaTela' | 'tokenEmail' | 'tokenSms' | (string & {});
|
|
7
|
+
export interface ZapsignConfig {
|
|
8
|
+
apiToken: string;
|
|
9
|
+
sandbox?: boolean;
|
|
10
|
+
/** URL-base da API (ex.: vinda de env/proxy). Quando definida, vence o switch por sandbox. */
|
|
11
|
+
baseUrl?: string;
|
|
12
|
+
/** Pasta no ZapSign onde os documentos são criados (API: folder_path). Ex.: '/'. */
|
|
13
|
+
folderPath?: string;
|
|
14
|
+
/** Cor primária da marca no fluxo de assinatura (API: brand_primary_color). Ex.: '#000000'. */
|
|
15
|
+
brandPrimaryColor?: string;
|
|
16
|
+
/** Modo de autenticação do signatário (API: auth_mode). Ex.: 'assinaturaTela'. */
|
|
17
|
+
authMode?: AuthMode;
|
|
18
|
+
}
|
|
19
|
+
export interface ZapsignSignerResponse {
|
|
20
|
+
sign_url: string;
|
|
21
|
+
}
|
|
22
|
+
export interface ZapsignCreateResponse {
|
|
23
|
+
token: string;
|
|
24
|
+
signers: ZapsignSignerResponse[];
|
|
25
|
+
}
|
|
26
|
+
export interface ZapsignDetailResponse {
|
|
27
|
+
token: string;
|
|
28
|
+
status: string;
|
|
29
|
+
original_file: string;
|
|
30
|
+
signed_file: string;
|
|
31
|
+
external_id: string;
|
|
32
|
+
}
|
|
33
|
+
/** Resposta do POST /api/v1/sign/ (assinatura automática). Shape mínimo observado. */
|
|
34
|
+
export interface ZapsignSignResponse {
|
|
35
|
+
status?: string;
|
|
36
|
+
[k: string]: unknown;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=zapsign-client.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zapsign-client.types.d.ts","sourceRoot":"","sources":["../../src/zapsign-client/zapsign-client.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAChB,gBAAgB,GAChB,YAAY,GACZ,UAAU,GACV,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8FAA8F;IAC9F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+FAA+F;IAC/F,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kFAAkF;IAClF,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,qBAAqB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,sFAAsF;AACtF,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zapsign-client.types.js","sourceRoot":"","sources":["../../src/zapsign-client/zapsign-client.types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,51 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devix-tecnologia/zapsign-client",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.4.4",
|
|
4
|
+
"description": "Cliente ZapSign implementando IProvedorAssinatura",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Devix Tecnologia Ltda <contato@devix.co> (https://devix.co)",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "dist/index.js",
|
|
9
|
+
"types": "dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"import": "./dist/index.js",
|
|
14
|
+
"default": "./dist/index.js"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"README.md",
|
|
20
|
+
"LICENSE"
|
|
21
|
+
],
|
|
22
|
+
"publishConfig": {
|
|
23
|
+
"registry": "https://registry.npmjs.org/",
|
|
24
|
+
"@devix-tecnologia:registry": "https://registry.npmjs.org/",
|
|
25
|
+
"access": "public"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@devix-tecnologia/assinatura-eletronica": "^0.5.1",
|
|
29
|
+
"axios": "^1.20.0"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@types/node": "^24.13.5",
|
|
33
|
+
"typescript": "^7.0.2",
|
|
34
|
+
"vitest": "^5.0.1"
|
|
35
|
+
},
|
|
36
|
+
"repository": {
|
|
37
|
+
"type": "git",
|
|
38
|
+
"url": "git+https://github.com/devix-tecnologia/assinatura-eletronica.git",
|
|
39
|
+
"directory": "packages/zapsign-client"
|
|
40
|
+
},
|
|
41
|
+
"scripts": {
|
|
42
|
+
"build": "tsc -p tsconfig.build.json",
|
|
43
|
+
"clean": "rm -rf dist coverage tsconfig.tsbuildinfo",
|
|
44
|
+
"dev": "tsc -p tsconfig.build.json --watch",
|
|
45
|
+
"format": "biome check --write .",
|
|
46
|
+
"lint": "biome check . --error-on-warnings",
|
|
47
|
+
"test": "vitest --run",
|
|
48
|
+
"test:watch": "vitest --watch",
|
|
49
|
+
"typecheck": "tsc --noEmit"
|
|
50
|
+
}
|
|
6
51
|
}
|