@in.pulse-crm/sdk 1.0.7 → 1.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/dist/auth.d.ts +75 -0
- package/dist/auth.js +97 -0
- package/dist/file.d.ts +97 -0
- package/dist/file.js +64 -0
- package/dist/index.d.ts +6 -4
- package/dist/index.js +44 -7
- package/dist/instance.d.ts +21 -0
- package/dist/instance.js +37 -0
- package/dist/response.d.ts +22 -0
- package/dist/response.js +2 -0
- package/dist/user.d.ts +192 -0
- package/dist/user.js +85 -0
- package/package.json +11 -4
- package/src/auth.ts +139 -0
- package/src/file.ts +137 -0
- package/src/index.ts +23 -4
- package/src/instance.ts +44 -0
- package/src/reports.ts +59 -0
- package/src/response.ts +26 -0
- package/src/user.ts +246 -0
- package/src/auth.sdk.ts +0 -80
- package/src/instance.sdk.ts +0 -38
- package/src/user.sdk.ts +0 -68
package/src/user.ts
ADDED
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { AxiosInstance } from "axios";
|
|
2
|
+
import { DataResponse, PaginatedResponse } from "./response";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Enum que representa os diferentes papéis de usuário dentro do sistema.
|
|
6
|
+
*
|
|
7
|
+
* @enum {string}
|
|
8
|
+
* @property {string} ADMIN - Representa um papel de administrador.
|
|
9
|
+
* @property {string} ACTIVE - Representa um papel de usuário ativo.
|
|
10
|
+
* @property {string} RECEPTIONIST - Representa um papel de recepcionista.
|
|
11
|
+
* @property {string} BOTH - Representa um papel que combina tanto recepcionista quanto usuário ativo.
|
|
12
|
+
*/
|
|
13
|
+
export enum UserRole {
|
|
14
|
+
ADMIN = "ADMIN",
|
|
15
|
+
ACTIVE = "ATIVO",
|
|
16
|
+
RECEPTIONIST = "RECEP",
|
|
17
|
+
BOTH = "AMBOS",
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Interface que representa um usuário do Inpulse.
|
|
22
|
+
*/
|
|
23
|
+
export interface User {
|
|
24
|
+
/** Código do usuário */
|
|
25
|
+
CODIGO: number;
|
|
26
|
+
/** Indica se o usuário está ativo */
|
|
27
|
+
ATIVO: "SIM" | "NAO" | null;
|
|
28
|
+
/** Nome do usuário */
|
|
29
|
+
NOME: string;
|
|
30
|
+
/** Login do usuário */
|
|
31
|
+
LOGIN: string;
|
|
32
|
+
/** Email do usuário */
|
|
33
|
+
EMAIl: string;
|
|
34
|
+
/** Nível de acesso do usuário */
|
|
35
|
+
NIVEL: UserRole | null;
|
|
36
|
+
/** Horário de trabalho do usuário */
|
|
37
|
+
HORARIO: number;
|
|
38
|
+
/** Data de cadastro do usuário */
|
|
39
|
+
DATACAD: Date | null;
|
|
40
|
+
/** Código do setor do usuário */
|
|
41
|
+
SETOR: number;
|
|
42
|
+
/** Nome de exibição do usuário */
|
|
43
|
+
NOME_EXIBICAO: string | null;
|
|
44
|
+
/** Código ERP do usuário */
|
|
45
|
+
CODIGO_ERP: string;
|
|
46
|
+
/** Nome do setor do usuário */
|
|
47
|
+
SETOR_NOME: string;
|
|
48
|
+
/** Senha do usuário */
|
|
49
|
+
SENHA?: string | null;
|
|
50
|
+
/** Data de expiração da senha do usuário */
|
|
51
|
+
EXPIRA_EM: Date | null;
|
|
52
|
+
/** Indica se o usuário deve alterar a senha */
|
|
53
|
+
ALTERA_SENHA: "SIM" | "NAO" | null;
|
|
54
|
+
/** Indica se o usuário pode editar contatos */
|
|
55
|
+
EDITA_CONTATOS: "SIM" | "NAO" | null;
|
|
56
|
+
/** Indica se o usuário pode visualizar compras */
|
|
57
|
+
VISUALIZA_COMPRAS: "SIM" | "NAO" | null;
|
|
58
|
+
/** Tipo de cadastro do usuário */
|
|
59
|
+
CADASTRO: "TOTAL" | "NULOS" | null;
|
|
60
|
+
/** Indica se o usuário está logado */
|
|
61
|
+
LOGADO: number | null;
|
|
62
|
+
/** Data e hora do início do último login */
|
|
63
|
+
ULTIMO_LOGIN_INI: Date | null;
|
|
64
|
+
/** Data e hora do fim do último login */
|
|
65
|
+
ULTIMO_LOGIN_FIM: Date | null;
|
|
66
|
+
/** Código de telefonia do usuário */
|
|
67
|
+
CODTELEFONIA: string;
|
|
68
|
+
/** Indica se o usuário agenda ligações */
|
|
69
|
+
AGENDA_LIG: "SIM" | "NAO";
|
|
70
|
+
/** Indica se o usuário liga para representantes */
|
|
71
|
+
LIGA_REPRESENTANTE: "SIM" | "NAO";
|
|
72
|
+
/** Banco do usuário */
|
|
73
|
+
BANCO: string;
|
|
74
|
+
/** Indica se o usuário filtra por DDD */
|
|
75
|
+
FILTRA_DDD: "SIM" | "NAO";
|
|
76
|
+
/** Indica se o usuário filtra por estado */
|
|
77
|
+
FILTRA_ESTADO: "SIM" | "NAO";
|
|
78
|
+
/** Ramal do Asterisk do usuário */
|
|
79
|
+
ASTERISK_RAMAL: string | null;
|
|
80
|
+
/** UserID do Asterisk do usuário */
|
|
81
|
+
ASTERISK_USERID: string | null;
|
|
82
|
+
/** Login do Asterisk do usuário */
|
|
83
|
+
ASTERISK_LOGIN: string | null;
|
|
84
|
+
/** Senha do Asterisk do usuário */
|
|
85
|
+
ASTERISK_SENHA: string | null;
|
|
86
|
+
/** Codec do Asterisk do usuário */
|
|
87
|
+
CODEC: string | null;
|
|
88
|
+
/** Assinatura de email do usuário */
|
|
89
|
+
ASSINATURA_EMAIL: string | null;
|
|
90
|
+
/** Dias para ligar para representantes */
|
|
91
|
+
LIGA_REPRESENTANTE_DIAS: number | null;
|
|
92
|
+
/** Email do operador */
|
|
93
|
+
EMAILOPERADOR: string | null;
|
|
94
|
+
/** Senha do email do operador */
|
|
95
|
+
SENHAEMAILOPERADOR: string | null;
|
|
96
|
+
/** Email de exibição do usuário */
|
|
97
|
+
EMAIL_EXIBICAO: string | null;
|
|
98
|
+
/** Limite diário de agendamento */
|
|
99
|
+
limite_diario_agendamento: number | null;
|
|
100
|
+
/** Indica se o usuário é omni */
|
|
101
|
+
OMNI: number | null;
|
|
102
|
+
/** Caminho do banco de dados */
|
|
103
|
+
CAMINHO_DATABASE: string | null;
|
|
104
|
+
/** ID da campanha WeOn */
|
|
105
|
+
IDCAMPANHA_WEON: string | null;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Interface que representa o objeto de transferência de dados para criar um usuário.
|
|
110
|
+
*/
|
|
111
|
+
export interface CreateUserDTO {
|
|
112
|
+
/**
|
|
113
|
+
* O nome do usuário.
|
|
114
|
+
*/
|
|
115
|
+
NOME: string;
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* O nome de usuário para login.
|
|
119
|
+
*/
|
|
120
|
+
LOGIN: string;
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* A senha do usuário.
|
|
124
|
+
*/
|
|
125
|
+
SENHA: string;
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* O nível de acesso do usuário.
|
|
129
|
+
* Pode ser um dos seguintes valores:
|
|
130
|
+
* - "ATIVO"
|
|
131
|
+
* - "RECEP"
|
|
132
|
+
* - "AMBOS"
|
|
133
|
+
* - "ADMIN"
|
|
134
|
+
*/
|
|
135
|
+
NIVEL: UserRole;
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* O número do setor do usuário.
|
|
139
|
+
*/
|
|
140
|
+
SETOR: number;
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* O endereço de email do usuário (opcional).
|
|
144
|
+
*/
|
|
145
|
+
EMAIL?: string;
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* O nome de exibição do usuário (opcional).
|
|
149
|
+
*/
|
|
150
|
+
NOME_EXIBICAO?: string;
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* O código ERP do usuário (opcional).
|
|
154
|
+
*/
|
|
155
|
+
CODIGO_ERP?: string;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Interface que representa o objeto de transferência de dados para atualizar um usuário.
|
|
160
|
+
*/
|
|
161
|
+
export type UpdateUserDTO = Partial<CreateUserDTO>;
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* SDK para operações de usuários.
|
|
165
|
+
*/
|
|
166
|
+
class UserSDK {
|
|
167
|
+
/**
|
|
168
|
+
* Cria uma instância do SDK de usuários.
|
|
169
|
+
* @param httpClient - A instância do cliente HTTP a ser usada para fazer requisições à API.
|
|
170
|
+
*/
|
|
171
|
+
constructor(private readonly httpClient: AxiosInstance) { }
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Obtém a lista de usuários.
|
|
175
|
+
* @param instance - O nome da instância.
|
|
176
|
+
* @returns Uma resposta paginada contendo os usuários.
|
|
177
|
+
*/
|
|
178
|
+
public async getUsers(instance: string) {
|
|
179
|
+
const response = await this.httpClient.get<PaginatedResponse<User>>(
|
|
180
|
+
`/${instance}/users`,
|
|
181
|
+
);
|
|
182
|
+
|
|
183
|
+
return response.data;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Obtém um usuário pelo ID.
|
|
188
|
+
* @param instance - O nome da instância.
|
|
189
|
+
* @param userId - O ID do usuário.
|
|
190
|
+
* @returns Uma resposta contendo os dados do usuário.
|
|
191
|
+
*/
|
|
192
|
+
public async getUserById(instance: string, userId: number) {
|
|
193
|
+
const response = await this.httpClient.get<DataResponse<User>>(
|
|
194
|
+
`/${instance}/users/${userId}`,
|
|
195
|
+
);
|
|
196
|
+
|
|
197
|
+
return response.data;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Cria um novo usuário.
|
|
202
|
+
* @param instance - O nome da instância.
|
|
203
|
+
* @param data - Os dados para criação do usuário.
|
|
204
|
+
* @returns Uma resposta contendo os dados do usuário criado.
|
|
205
|
+
* @throws Um erro se a criação do usuário falhar.
|
|
206
|
+
*/
|
|
207
|
+
public async createUser(instance: string, data: CreateUserDTO) {
|
|
208
|
+
try {
|
|
209
|
+
const response = await this.httpClient.post<DataResponse<User>>(
|
|
210
|
+
`/${instance}/users`,
|
|
211
|
+
data,
|
|
212
|
+
);
|
|
213
|
+
|
|
214
|
+
return response.data;
|
|
215
|
+
} catch (error) {
|
|
216
|
+
throw new Error("Failed to create user", { cause: error });
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Atualiza um usuário existente.
|
|
222
|
+
* @param instance - O nome da instância.
|
|
223
|
+
* @param userId - O ID do usuário.
|
|
224
|
+
* @param data - Os dados para atualização do usuário.
|
|
225
|
+
* @returns Uma resposta contendo os dados do usuário atualizado.
|
|
226
|
+
* @throws Um erro se a atualização do usuário falhar.
|
|
227
|
+
*/
|
|
228
|
+
public async updateUser(
|
|
229
|
+
instance: string,
|
|
230
|
+
userId: string,
|
|
231
|
+
data: UpdateUserDTO,
|
|
232
|
+
) {
|
|
233
|
+
try {
|
|
234
|
+
const response = await this.httpClient.patch<DataResponse<User>>(
|
|
235
|
+
`/${instance}/users/${userId}`,
|
|
236
|
+
data,
|
|
237
|
+
);
|
|
238
|
+
|
|
239
|
+
return response.data;
|
|
240
|
+
} catch (error) {
|
|
241
|
+
throw new Error("Failed to update user", { cause: error });
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
export default UserSDK;
|
package/src/auth.sdk.ts
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import axios, { AxiosInstance, CreateAxiosDefaults } from "axios";
|
|
2
|
-
import { DataResponse, LoginData, SessionData, User } from "@in.pulse-crm/types";
|
|
3
|
-
import { sanitizeErrorMessage } from "@in.pulse-crm/utils";
|
|
4
|
-
|
|
5
|
-
interface AuthSDKOptions {
|
|
6
|
-
axiosConfig: CreateAxiosDefaults;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
class AuthSDK {
|
|
10
|
-
private readonly _api: AxiosInstance;
|
|
11
|
-
|
|
12
|
-
constructor(props: AuthSDKOptions) {
|
|
13
|
-
this._api = axios.create(props.axiosConfig);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
public async login(instance: string, login: string, password: string) {
|
|
17
|
-
const response = await this._api.post<DataResponse<LoginData>>(
|
|
18
|
-
`${instance}/login`,
|
|
19
|
-
{ LOGIN: login, SENHA: password },
|
|
20
|
-
);
|
|
21
|
-
|
|
22
|
-
return response.data;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
public async fetchSessionData(instance: string, token: string) {
|
|
26
|
-
const response = await this._api
|
|
27
|
-
.get<DataResponse<SessionData>>(`/${instance}/auth`, {
|
|
28
|
-
headers: {
|
|
29
|
-
authorization: token,
|
|
30
|
-
},
|
|
31
|
-
})
|
|
32
|
-
.catch((error) => {
|
|
33
|
-
const message = sanitizeErrorMessage(error);
|
|
34
|
-
throw new Error("Failed to fetch session data! " + message);
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
return response.data;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
public async fetchSessionUser(instance: string, token: string) {
|
|
41
|
-
const response = await this._api
|
|
42
|
-
.get<DataResponse<User>>(`/${instance}/auth/user`, {
|
|
43
|
-
headers: {
|
|
44
|
-
authorization: token,
|
|
45
|
-
},
|
|
46
|
-
})
|
|
47
|
-
.catch((error) => {
|
|
48
|
-
const message = sanitizeErrorMessage(error);
|
|
49
|
-
throw new Error("Failed to fetch session user! " + message);
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
return response.data;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
public async isAuthenticated(instance: string, token: string) {
|
|
56
|
-
try {
|
|
57
|
-
const { data } = await this.fetchSessionData(instance, token);
|
|
58
|
-
|
|
59
|
-
return !!data.userId;
|
|
60
|
-
} catch {
|
|
61
|
-
return false;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
public async isAuthorized(
|
|
66
|
-
instance: string,
|
|
67
|
-
token: string,
|
|
68
|
-
authorizedRoles: string[],
|
|
69
|
-
) {
|
|
70
|
-
try {
|
|
71
|
-
const { data } = await this.fetchSessionData(instance, token);
|
|
72
|
-
|
|
73
|
-
return authorizedRoles.includes(data.role);
|
|
74
|
-
} catch {
|
|
75
|
-
return false;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
export default AuthSDK;
|
package/src/instance.sdk.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import axios, { AxiosInstance, CreateAxiosDefaults } from "axios";
|
|
2
|
-
import { QueryResponse } from "@in.pulse-crm/types";
|
|
3
|
-
|
|
4
|
-
interface InstanceSDKOptions {
|
|
5
|
-
axiosConfig: CreateAxiosDefaults;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
class InstanceSDK {
|
|
9
|
-
private readonly _api: AxiosInstance;
|
|
10
|
-
|
|
11
|
-
constructor(props: InstanceSDKOptions) {
|
|
12
|
-
this._api = axios.create(props.axiosConfig);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
public async executeQuery<T>(
|
|
16
|
-
instance: string,
|
|
17
|
-
query: string,
|
|
18
|
-
parameters: Array<any>,
|
|
19
|
-
) {
|
|
20
|
-
const response = await this._api
|
|
21
|
-
.post<QueryResponse<T>>(`/${instance}/query`, { query, parameters })
|
|
22
|
-
.catch((error) => {
|
|
23
|
-
if (error.response?.data?.message) {
|
|
24
|
-
throw new Error(error.response.data.message);
|
|
25
|
-
}
|
|
26
|
-
if (error.response?.status) {
|
|
27
|
-
throw new Error(
|
|
28
|
-
`Failed to execute query, status: ${error.response.status}`,
|
|
29
|
-
);
|
|
30
|
-
}
|
|
31
|
-
throw new Error(error.message);
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
return response.data.result;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export default InstanceSDK;
|
package/src/user.sdk.ts
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import axios, { AxiosInstance, CreateAxiosDefaults } from "axios";
|
|
2
|
-
import type {
|
|
3
|
-
DataResponse,
|
|
4
|
-
PaginatedResponse,
|
|
5
|
-
User,
|
|
6
|
-
CreateUserDTO,
|
|
7
|
-
UpdateUserDTO,
|
|
8
|
-
} from "@in.pulse-crm/types";
|
|
9
|
-
|
|
10
|
-
interface UserSDKOptions {
|
|
11
|
-
axiosConfig: CreateAxiosDefaults;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
class UserSDK {
|
|
15
|
-
private readonly _api: AxiosInstance;
|
|
16
|
-
|
|
17
|
-
constructor(props: UserSDKOptions) {
|
|
18
|
-
this._api = axios.create(props.axiosConfig);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
public async getUsers(instance: string) {
|
|
22
|
-
const response = await this._api.get<PaginatedResponse<User>>(
|
|
23
|
-
`/${instance}/users`,
|
|
24
|
-
);
|
|
25
|
-
|
|
26
|
-
return response.data;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
public async getUserById(instance: string, userId: number) {
|
|
30
|
-
const response = await this._api.get<DataResponse<User>>(
|
|
31
|
-
`/${instance}/users/${userId}`,
|
|
32
|
-
);
|
|
33
|
-
|
|
34
|
-
return response.data;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
public async createUser(instance: string, data: CreateUserDTO) {
|
|
38
|
-
try {
|
|
39
|
-
const response = await this._api.post<DataResponse<User>>(
|
|
40
|
-
`/${instance}/users`,
|
|
41
|
-
data,
|
|
42
|
-
);
|
|
43
|
-
|
|
44
|
-
return response.data;
|
|
45
|
-
} catch (error) {
|
|
46
|
-
throw new Error("Failed to create user", { cause: error });
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
public async updateUser(
|
|
51
|
-
instance: string,
|
|
52
|
-
userId: string,
|
|
53
|
-
data: UpdateUserDTO,
|
|
54
|
-
) {
|
|
55
|
-
try {
|
|
56
|
-
const response = await this._api.patch<DataResponse<User>>(
|
|
57
|
-
`/${instance}/users/${userId}`,
|
|
58
|
-
data,
|
|
59
|
-
);
|
|
60
|
-
|
|
61
|
-
return response.data;
|
|
62
|
-
} catch (error) {
|
|
63
|
-
throw new Error("Failed to update user", { cause: error });
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
export default UserSDK;
|