termo_core 0.1.6 → 0.1.7

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.
@@ -2,1088 +2,167 @@
2
2
  import { chamar_servico, codificar_parametro_de_caminho } from "../base/requisicao.js";
3
3
  import { TERMO_SUPPORT as SERVICO_DESTA_API } from "../base/servicos.js";
4
4
  /**
5
- * Anexa um arquivo ou link
5
+ * Lista os boards paginados
6
6
  *
7
- * Exige a permissão `criar` na área `projetos` ou `tickets`. Anexa a uma tarefa (`tarefa_id`) ou ticket (`ticket_id`), nunca aos dois. Mande o arquivo em `arquivo_base64` (com ou sem o prefixo `data:...;base64,`, até 10 MB, `tipo_mime` informa o formato) ou um link em `url` (`http://` ou `https://`, até 1000 caracteres). Com `importar_url: true`, o servidor baixa a imagem de `url` e guarda o arquivo no lugar do link (é o caminho para anexar imagens pelo MCP): só `https://`, sem redirecionamento, servidor de IP público, resposta `image/*` de até 10 MB; o `tipo_mime` vem da resposta. `nome` é obrigatório (até 200). O arquivo vai para o TermoBucket (privado, app `termo-suporte`); se o bucket falhar, fica no banco até a rotina do backend levá-lo. O corpo aceita até 16 MiB. A atividade da tarefa ou do ticket ganha a linha do anexo.
7
+ * Os boards que a pessoa enxerga, do mais recente para o mais antigo, sempre 50 por página: `tamanho` é ignorado. `pagina` começa em 1; aceita `nome` e `favoritos` como no filtro.
8
8
  *
9
- * `POST /anexo`
9
+ * `GET /board`
10
10
  */
11
- export function criar_anexo(credencial_de_acesso, corpo_da_requisicao, opcoes_da_chamada) {
12
- return chamar_servico({
13
- servico: SERVICO_DESTA_API,
14
- metodo_http: "POST",
15
- caminho_da_rota: "/anexo",
16
- credencial_de_acesso,
17
- corpo_json: corpo_da_requisicao,
18
- formato_da_resposta: "json",
19
- }, opcoes_da_chamada);
20
- }
21
- /**
22
- * Lista os anexos de uma tarefa ou ticket
23
- *
24
- * Exige a permissão de leitura na área `projetos` ou `tickets` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Devolve até 500 anexos, do mais novo para o mais antigo, sem o conteúdo dos arquivos. Informe `tarefa_id` ou `ticket_id`.
25
- *
26
- * `GET /anexo/filtro`
27
- */
28
- export function buscar_pelo_filtro_anexo(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
29
- return chamar_servico({
30
- servico: SERVICO_DESTA_API,
31
- metodo_http: "GET",
32
- caminho_da_rota: "/anexo/filtro",
33
- credencial_de_acesso,
34
- parametros_de_consulta: parametros,
35
- formato_da_resposta: "json",
36
- }, opcoes_da_chamada);
37
- }
38
- /**
39
- * Baixa um anexo pelo id
40
- *
41
- * Exige a permissão de leitura na área `projetos` ou `tickets` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Devolve os dados do anexo e, quando é arquivo, `url_download`: endereço de download assinado do TermoBucket (arquivo privado do app `termo-suporte`), válido por 15 minutos. `conteudo_base64` só vem preenchido enquanto o arquivo ainda está no banco (o TermoBucket falhou no envio; a rotina do backend leva ao bucket a cada 30 minutos). Os dois ficam vazios quando o anexo é um link.
42
- *
43
- * `GET /anexo/{id}`
44
- */
45
- export function buscar_pelo_id_anexo(credencial_de_acesso, id, opcoes_da_chamada) {
46
- return chamar_servico({
47
- servico: SERVICO_DESTA_API,
48
- metodo_http: "GET",
49
- caminho_da_rota: `/anexo/${codificar_parametro_de_caminho(id)}`,
50
- credencial_de_acesso,
51
- formato_da_resposta: "json",
52
- }, opcoes_da_chamada);
53
- }
54
- /**
55
- * Renomeia um anexo pelo id
56
- *
57
- * Exige a permissão `editar` na área `projetos` ou `tickets`. Troca o `nome` (obrigatório, até 200 caracteres).
58
- *
59
- * `PATCH /anexo/{id}`
60
- */
61
- export function atualizar_pelo_id_anexo(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
62
- return chamar_servico({
63
- servico: SERVICO_DESTA_API,
64
- metodo_http: "PATCH",
65
- caminho_da_rota: `/anexo/${codificar_parametro_de_caminho(id)}`,
66
- credencial_de_acesso,
67
- corpo_json: corpo_da_requisicao,
68
- formato_da_resposta: "json",
69
- }, opcoes_da_chamada);
70
- }
71
- /**
72
- * Exclui um anexo pelo id
73
- *
74
- * Exige a permissão `deletar` na área `projetos` ou `tickets`. Exclusão lógica.
75
- *
76
- * `DELETE /anexo/{id}`
77
- */
78
- export function deletar_pelo_id_anexo(credencial_de_acesso, id, opcoes_da_chamada) {
79
- return chamar_servico({
80
- servico: SERVICO_DESTA_API,
81
- metodo_http: "DELETE",
82
- caminho_da_rota: `/anexo/${codificar_parametro_de_caminho(id)}`,
83
- credencial_de_acesso,
84
- formato_da_resposta: "sem_conteudo",
85
- }, opcoes_da_chamada);
86
- }
87
- /**
88
- * Lista os aplicativos paginados
89
- *
90
- * Exige a permissão de leitura na área `aplicativos`. A lista de aplicativos é a do TermoAuth (não há cadastro, edição nem exclusão no TermoSupport): antes de responder, a rota busca os apps no TermoAuth pelo `termo_core` com o token de quem chamou e espelha nome, endereço, descrição e cor. Para um master do TermoAuth vem a lista inteira (`todos=true`) e o que sumiu de lá fica inativo; para os demais, só entram ou se atualizam os apps que a pessoa pode abrir. Falha no TermoAuth não impede a resposta: vem o que já estava sincronizado. A sincronização também roda quando um master entra. Lista os aplicativos sincronizados (com `termoauth_id`) em ordem alfabética do nome, sempre 50 por página: `tamanho` é ignorado. `pagina` começa em 1 (padrão 1; valores menores viram 1). `total` é a quantidade de aplicativos não excluídos.
91
- *
92
- * `GET /aplicativo`
93
- */
94
- export function buscar_paginador_aplicativo(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
95
- return chamar_servico({
96
- servico: SERVICO_DESTA_API,
97
- metodo_http: "GET",
98
- caminho_da_rota: "/aplicativo",
99
- credencial_de_acesso,
100
- parametros_de_consulta: parametros,
101
- formato_da_resposta: "json",
102
- }, opcoes_da_chamada);
103
- }
104
- /**
105
- * Lista básica de aplicativos para seleção
106
- *
107
- * Exige a permissão de leitura na área `aplicativos`, `projetos` ou `tickets`. Devolve só id, nome e endereço, em ordem alfabética do nome, sem os excluídos. `somente_ativos=true` deixa de fora os aplicativos inativos (é o que usam os campos de projetos e tickets). `busca` procura o trecho no nome ou no endereço, sem diferenciar maiúsculas. `pagina` começa em 1 (padrão 1) e `tamanho` tem padrão 10, sem máximo; valores menores que 1 viram 1.
108
- *
109
- * `GET /aplicativo/autocomplete`
110
- */
111
- export function buscar_auto_complete_aplicativo(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
112
- return chamar_servico({
113
- servico: SERVICO_DESTA_API,
114
- metodo_http: "GET",
115
- caminho_da_rota: "/aplicativo/autocomplete",
116
- credencial_de_acesso,
117
- parametros_de_consulta: parametros,
118
- formato_da_resposta: "json",
119
- }, opcoes_da_chamada);
120
- }
121
- /**
122
- * Busca aplicativos por filtro
123
- *
124
- * Exige a permissão de leitura na área `aplicativos`. Devolve todos os aplicativos sincronizados com o TermoAuth que casam com o filtro, sem paginação, em ordem alfabética do nome. `nome` e `endereco` procuram o trecho no campo, sem diferenciar maiúsculas; `ativo` filtra pela situação. Sem filtro, devolve todos.
125
- *
126
- * `GET /aplicativo/filtro`
127
- */
128
- export function buscar_pelo_filtro_aplicativo(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
129
- return chamar_servico({
130
- servico: SERVICO_DESTA_API,
131
- metodo_http: "GET",
132
- caminho_da_rota: "/aplicativo/filtro",
133
- credencial_de_acesso,
134
- parametros_de_consulta: parametros,
135
- formato_da_resposta: "json",
136
- }, opcoes_da_chamada);
137
- }
138
- /**
139
- * Busca um aplicativo pelo id
140
- *
141
- * Exige a permissão de leitura na área `aplicativos` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Aplicativo excluído não é encontrado.
142
- *
143
- * `GET /aplicativo/{id}`
144
- */
145
- export function buscar_pelo_id_aplicativo(credencial_de_acesso, id, opcoes_da_chamada) {
146
- return chamar_servico({
147
- servico: SERVICO_DESTA_API,
148
- metodo_http: "GET",
149
- caminho_da_rota: `/aplicativo/${codificar_parametro_de_caminho(id)}`,
150
- credencial_de_acesso,
151
- formato_da_resposta: "json",
152
- }, opcoes_da_chamada);
153
- }
154
- /**
155
- * Lista os comentários paginados
156
- *
157
- * Exige a permissão de leitura na área `projetos` ou `tickets` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Do mais novo para o mais antigo, sempre 50 por página: `tamanho` é ignorado. `tarefa_id` e `ticket_id` limitam a uma tarefa ou ticket.
158
- *
159
- * `GET /comentario`
160
- */
161
- export function buscar_paginador_comentario(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
162
- return chamar_servico({
163
- servico: SERVICO_DESTA_API,
164
- metodo_http: "GET",
165
- caminho_da_rota: "/comentario",
166
- credencial_de_acesso,
167
- parametros_de_consulta: parametros,
168
- formato_da_resposta: "json",
169
- }, opcoes_da_chamada);
170
- }
171
- /**
172
- * Comenta numa tarefa ou ticket
173
- *
174
- * Exige a permissão `criar` na área `projetos` ou `tickets`. Grava o comentário de quem está logado em uma tarefa (`tarefa_id`) ou um ticket (`ticket_id`), nunca nos dois. `texto` é obrigatório (até 10000 caracteres). `interno` (só no ticket) vira nota que o solicitante não acompanha. `mencionados` são os colaboradores marcados com @, que recebem notificação; o responsável e o criador da tarefa (ou o responsável e o solicitante do ticket) também são avisados. A primeira resposta pública da equipe num ticket novo registra a primeira resposta e o põe em atendimento.
175
- *
176
- * `POST /comentario`
177
- */
178
- export function criar_comentario(credencial_de_acesso, corpo_da_requisicao, opcoes_da_chamada) {
179
- return chamar_servico({
180
- servico: SERVICO_DESTA_API,
181
- metodo_http: "POST",
182
- caminho_da_rota: "/comentario",
183
- credencial_de_acesso,
184
- corpo_json: corpo_da_requisicao,
185
- formato_da_resposta: "json",
186
- }, opcoes_da_chamada);
187
- }
188
- /**
189
- * Lista a conversa de uma tarefa ou ticket
190
- *
191
- * Exige a permissão de leitura na área `projetos` ou `tickets` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Devolve até 1000 comentários do mais antigo para o mais novo. Informe `tarefa_id` ou `ticket_id`.
192
- *
193
- * `GET /comentario/filtro`
194
- */
195
- export function buscar_pelo_filtro_comentario(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
196
- return chamar_servico({
197
- servico: SERVICO_DESTA_API,
198
- metodo_http: "GET",
199
- caminho_da_rota: "/comentario/filtro",
200
- credencial_de_acesso,
201
- parametros_de_consulta: parametros,
202
- formato_da_resposta: "json",
203
- }, opcoes_da_chamada);
204
- }
205
- /**
206
- * Busca um comentário pelo id
207
- *
208
- * Exige a permissão de leitura na área `projetos` ou `tickets` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Comentário excluído não é encontrado.
209
- *
210
- * `GET /comentario/{id}`
211
- */
212
- export function buscar_pelo_id_comentario(credencial_de_acesso, id, opcoes_da_chamada) {
213
- return chamar_servico({
214
- servico: SERVICO_DESTA_API,
215
- metodo_http: "GET",
216
- caminho_da_rota: `/comentario/${codificar_parametro_de_caminho(id)}`,
217
- credencial_de_acesso,
218
- formato_da_resposta: "json",
219
- }, opcoes_da_chamada);
220
- }
221
- /**
222
- * Edita um comentário pelo id
223
- *
224
- * Exige a permissão `editar` na área `projetos` ou `tickets`. Troca o `texto` (obrigatório, até 10000 caracteres). Só quem escreveu edita; o comentário passa a mostrar `editado`.
225
- *
226
- * `PATCH /comentario/{id}`
227
- */
228
- export function atualizar_pelo_id_comentario(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
229
- return chamar_servico({
230
- servico: SERVICO_DESTA_API,
231
- metodo_http: "PATCH",
232
- caminho_da_rota: `/comentario/${codificar_parametro_de_caminho(id)}`,
233
- credencial_de_acesso,
234
- corpo_json: corpo_da_requisicao,
235
- formato_da_resposta: "json",
236
- }, opcoes_da_chamada);
237
- }
238
- /**
239
- * Exclui um comentário pelo id
240
- *
241
- * Exige a permissão `deletar` na área `projetos` ou `tickets`. Exclusão lógica. Só quem escreveu exclui.
242
- *
243
- * `DELETE /comentario/{id}`
244
- */
245
- export function deletar_pelo_id_comentario(credencial_de_acesso, id, opcoes_da_chamada) {
246
- return chamar_servico({
247
- servico: SERVICO_DESTA_API,
248
- metodo_http: "DELETE",
249
- caminho_da_rota: `/comentario/${codificar_parametro_de_caminho(id)}`,
250
- credencial_de_acesso,
251
- formato_da_resposta: "sem_conteudo",
252
- }, opcoes_da_chamada);
253
- }
254
- /**
255
- * Lista os documentos paginados
256
- *
257
- * Exige a permissão de leitura na área `aplicativos`. Lista os documentos não excluídos em ordem alfabética do nome, sempre 50 por página: `tamanho` é ignorado. `aplicativo_id` limita a um aplicativo. `pagina` começa em 1 (padrão 1; valores menores viram 1). `total` conta os documentos com o mesmo filtro de aplicativo.
258
- *
259
- * `GET /documento`
260
- */
261
- export function buscar_paginador_documento(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
262
- return chamar_servico({
263
- servico: SERVICO_DESTA_API,
264
- metodo_http: "GET",
265
- caminho_da_rota: "/documento",
266
- credencial_de_acesso,
267
- parametros_de_consulta: parametros,
268
- formato_da_resposta: "json",
269
- }, opcoes_da_chamada);
270
- }
271
- /**
272
- * Cadastra um documento de um aplicativo
273
- *
274
- * Exige a permissão `criar` na área `aplicativos`. Cadastra um documento da base de conhecimento de um aplicativo. `aplicativo_id` precisa ser de um aplicativo não excluído. `nome` é obrigatório (até 120 caracteres). `tipo` é `TEXTO`, `TXT`, `MD` ou `PDF`, sem diferenciar maiúsculas (padrão `TEXTO`, gravado em maiúsculas). O conteúdo vem em `conteudo` (texto) ou em `arquivo_base64` (o arquivo em base64, com ou sem o prefixo `data:...;base64,`); quando `arquivo_base64` vem preenchido, `conteudo` é ignorado. Com `tipo` `PDF` o backend extrai o texto do PDF; nos demais tipos o arquivo precisa ser texto UTF-8. O texto final não pode ficar vazio, e `caracteres` é o tamanho dele. O corpo aceita até 8 MiB (um PDF de cerca de 5 MB em base64).
275
- *
276
- * `POST /documento`
277
- */
278
- export function criar_documento(credencial_de_acesso, corpo_da_requisicao, opcoes_da_chamada) {
279
- return chamar_servico({
280
- servico: SERVICO_DESTA_API,
281
- metodo_http: "POST",
282
- caminho_da_rota: "/documento",
283
- credencial_de_acesso,
284
- corpo_json: corpo_da_requisicao,
285
- formato_da_resposta: "json",
286
- }, opcoes_da_chamada);
287
- }
288
- /**
289
- * Lista básica de documentos para seleção
290
- *
291
- * Exige a permissão de leitura na área `aplicativos`. Devolve só id, nome e tipo, em ordem alfabética do nome, sem os excluídos. `aplicativo_id` limita a um aplicativo e `busca` procura o trecho no nome, sem diferenciar maiúsculas. `pagina` começa em 1 (padrão 1) e `tamanho` tem padrão 10, sem máximo; valores menores que 1 viram 1.
292
- *
293
- * `GET /documento/autocomplete`
294
- */
295
- export function buscar_auto_complete_documento(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
296
- return chamar_servico({
297
- servico: SERVICO_DESTA_API,
298
- metodo_http: "GET",
299
- caminho_da_rota: "/documento/autocomplete",
300
- credencial_de_acesso,
301
- parametros_de_consulta: parametros,
302
- formato_da_resposta: "json",
303
- }, opcoes_da_chamada);
304
- }
305
- /**
306
- * Busca documentos por filtro
307
- *
308
- * Exige a permissão de leitura na área `aplicativos`. Devolve todos os documentos não excluídos que casam com o filtro, sem paginação, em ordem alfabética do nome, com o texto inteiro. `aplicativo_id` limita a um aplicativo; `nome` e `conteudo` procuram o trecho no campo, sem diferenciar maiúsculas; `tipo` é exato (`TEXTO`, `TXT`, `MD` ou `PDF`, sem diferenciar maiúsculas). Sem filtro, devolve todos.
309
- *
310
- * `GET /documento/filtro`
311
- */
312
- export function buscar_pelo_filtro_documento(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
313
- return chamar_servico({
314
- servico: SERVICO_DESTA_API,
315
- metodo_http: "GET",
316
- caminho_da_rota: "/documento/filtro",
317
- credencial_de_acesso,
318
- parametros_de_consulta: parametros,
319
- formato_da_resposta: "json",
320
- }, opcoes_da_chamada);
321
- }
322
- /**
323
- * Busca um documento pelo id
324
- *
325
- * Exige a permissão de leitura na área `aplicativos` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Devolve o documento com o texto inteiro em `conteudo`. Documento excluído não é encontrado.
326
- *
327
- * `GET /documento/{id}`
328
- */
329
- export function buscar_pelo_id_documento(credencial_de_acesso, id, opcoes_da_chamada) {
330
- return chamar_servico({
331
- servico: SERVICO_DESTA_API,
332
- metodo_http: "GET",
333
- caminho_da_rota: `/documento/${codificar_parametro_de_caminho(id)}`,
334
- credencial_de_acesso,
335
- formato_da_resposta: "json",
336
- }, opcoes_da_chamada);
337
- }
338
- /**
339
- * Atualiza um documento pelo id
340
- *
341
- * Exige a permissão `editar` na área `aplicativos`. Atualização parcial: só os campos enviados mudam; o aplicativo do documento não muda. `nome` não pode ficar vazio (até 120 caracteres) e `tipo` é `TEXTO`, `TXT`, `MD` ou `PDF`. Mandar `conteudo` ou `arquivo_base64` troca o texto, com as mesmas regras do cadastro (o arquivo é lido pelo `tipo` enviado ou, sem ele, pelo tipo atual do documento) e o texto final não pode ficar vazio. O corpo aceita até 8 MiB.
342
- *
343
- * `PATCH /documento/{id}`
344
- */
345
- export function atualizar_pelo_id_documento(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
346
- return chamar_servico({
347
- servico: SERVICO_DESTA_API,
348
- metodo_http: "PATCH",
349
- caminho_da_rota: `/documento/${codificar_parametro_de_caminho(id)}`,
350
- credencial_de_acesso,
351
- corpo_json: corpo_da_requisicao,
352
- formato_da_resposta: "json",
353
- }, opcoes_da_chamada);
354
- }
355
- /**
356
- * Exclui um documento pelo id
357
- *
358
- * Exige a permissão `deletar` na área `aplicativos`. A exclusão é lógica: o documento some das leituras, mas o registro não é apagado e não há como restaurá-lo.
359
- *
360
- * `DELETE /documento/{id}`
361
- */
362
- export function deletar_pelo_id_documento(credencial_de_acesso, id, opcoes_da_chamada) {
363
- return chamar_servico({
364
- servico: SERVICO_DESTA_API,
365
- metodo_http: "DELETE",
366
- caminho_da_rota: `/documento/${codificar_parametro_de_caminho(id)}`,
367
- credencial_de_acesso,
368
- formato_da_resposta: "sem_conteudo",
369
- }, opcoes_da_chamada);
370
- }
371
- /**
372
- * Lista as etiquetas paginadas
373
- *
374
- * Exige a permissão de leitura na área `projetos` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Lista em ordem alfabética, sempre 50 por página: `tamanho` é ignorado. `pagina` começa em 1.
375
- *
376
- * `GET /etiqueta`
377
- */
378
- export function buscar_paginador_etiqueta(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
379
- return chamar_servico({
380
- servico: SERVICO_DESTA_API,
381
- metodo_http: "GET",
382
- caminho_da_rota: "/etiqueta",
383
- credencial_de_acesso,
384
- parametros_de_consulta: parametros,
385
- formato_da_resposta: "json",
386
- }, opcoes_da_chamada);
387
- }
388
- /**
389
- * Cadastra uma etiqueta
390
- *
391
- * Exige a permissão `criar` na área `projetos`. Cria uma etiqueta para marcar tarefas (Backend, Frontend, Dados...). `nome` é obrigatório (até 40 caracteres) e único sem diferenciar maiúsculas. `cor` segue o formato `#00397c` (padrão `#00397c`).
392
- *
393
- * `POST /etiqueta`
394
- */
395
- export function criar_etiqueta(credencial_de_acesso, corpo_da_requisicao, opcoes_da_chamada) {
396
- return chamar_servico({
397
- servico: SERVICO_DESTA_API,
398
- metodo_http: "POST",
399
- caminho_da_rota: "/etiqueta",
400
- credencial_de_acesso,
401
- corpo_json: corpo_da_requisicao,
402
- formato_da_resposta: "json",
403
- }, opcoes_da_chamada);
404
- }
405
- /**
406
- * Lista básica de etiquetas para seleção
407
- *
408
- * Exige a permissão de leitura na área `projetos` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Devolve id, nome e cor, em ordem alfabética. `busca` procura o trecho no nome. `pagina` começa em 1 e `tamanho` tem padrão 10.
409
- *
410
- * `GET /etiqueta/autocomplete`
411
- */
412
- export function buscar_auto_complete_etiqueta(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
413
- return chamar_servico({
414
- servico: SERVICO_DESTA_API,
415
- metodo_http: "GET",
416
- caminho_da_rota: "/etiqueta/autocomplete",
417
- credencial_de_acesso,
418
- parametros_de_consulta: parametros,
419
- formato_da_resposta: "json",
420
- }, opcoes_da_chamada);
421
- }
422
- /**
423
- * Busca etiquetas por filtro
424
- *
425
- * Exige a permissão de leitura na área `projetos` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Devolve todas as etiquetas não excluídas, em ordem alfabética. `nome` procura o trecho no nome, sem diferenciar maiúsculas.
426
- *
427
- * `GET /etiqueta/filtro`
428
- */
429
- export function buscar_pelo_filtro_etiqueta(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
430
- return chamar_servico({
431
- servico: SERVICO_DESTA_API,
432
- metodo_http: "GET",
433
- caminho_da_rota: "/etiqueta/filtro",
434
- credencial_de_acesso,
435
- parametros_de_consulta: parametros,
436
- formato_da_resposta: "json",
437
- }, opcoes_da_chamada);
438
- }
439
- /**
440
- * Busca uma etiqueta pelo id
441
- *
442
- * Exige a permissão de leitura na área `projetos` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Etiqueta excluída não é encontrada.
443
- *
444
- * `GET /etiqueta/{id}`
445
- */
446
- export function buscar_pelo_id_etiqueta(credencial_de_acesso, id, opcoes_da_chamada) {
447
- return chamar_servico({
448
- servico: SERVICO_DESTA_API,
449
- metodo_http: "GET",
450
- caminho_da_rota: `/etiqueta/${codificar_parametro_de_caminho(id)}`,
451
- credencial_de_acesso,
452
- formato_da_resposta: "json",
453
- }, opcoes_da_chamada);
454
- }
455
- /**
456
- * Atualiza uma etiqueta pelo id
457
- *
458
- * Exige a permissão `editar` na área `projetos`. Atualização parcial de `nome` e `cor`, com as mesmas regras do cadastro.
459
- *
460
- * `PATCH /etiqueta/{id}`
461
- */
462
- export function atualizar_pelo_id_etiqueta(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
463
- return chamar_servico({
464
- servico: SERVICO_DESTA_API,
465
- metodo_http: "PATCH",
466
- caminho_da_rota: `/etiqueta/${codificar_parametro_de_caminho(id)}`,
467
- credencial_de_acesso,
468
- corpo_json: corpo_da_requisicao,
469
- formato_da_resposta: "json",
470
- }, opcoes_da_chamada);
471
- }
472
- /**
473
- * Exclui uma etiqueta pelo id
474
- *
475
- * Exige a permissão `deletar` na área `projetos`. Exclusão lógica: a etiqueta some das leituras e sai das tarefas que a usavam.
476
- *
477
- * `DELETE /etiqueta/{id}`
478
- */
479
- export function deletar_pelo_id_etiqueta(credencial_de_acesso, id, opcoes_da_chamada) {
480
- return chamar_servico({
481
- servico: SERVICO_DESTA_API,
482
- metodo_http: "DELETE",
483
- caminho_da_rota: `/etiqueta/${codificar_parametro_de_caminho(id)}`,
484
- credencial_de_acesso,
485
- formato_da_resposta: "sem_conteudo",
486
- }, opcoes_da_chamada);
487
- }
488
- /**
489
- * Atividade de uma tarefa ou ticket
490
- *
491
- * Exige a permissão de leitura na área `projetos` ou `tickets` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Devolve até 500 linhas de atividade, da mais nova para a mais antiga: criação, mudanças de campo, anexos. O histórico é gravado pelo próprio sistema e não tem cadastro, edição nem exclusão. Informe `tarefa_id` ou `ticket_id`.
492
- *
493
- * `GET /historico/filtro`
494
- */
495
- export function buscar_pelo_filtro_historico(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
496
- return chamar_servico({
497
- servico: SERVICO_DESTA_API,
498
- metodo_http: "GET",
499
- caminho_da_rota: "/historico/filtro",
500
- credencial_de_acesso,
501
- parametros_de_consulta: parametros,
502
- formato_da_resposta: "json",
503
- }, opcoes_da_chamada);
504
- }
505
- /**
506
- * Caixa de entrada paginada
507
- *
508
- * Livre para qualquer usuário autenticado: vale sempre para o colaborador de quem está logado. Lista as notificações da pessoa, da mais nova para a mais antiga, sempre 50 por página: `tamanho` é ignorado. `lida` filtra; `nao_lidas` traz o total ainda não lido (o número do sino), com qualquer filtro.
509
- *
510
- * `GET /notificacao`
511
- */
512
- export function buscar_paginador_notificacao(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
513
- return chamar_servico({
514
- servico: SERVICO_DESTA_API,
515
- metodo_http: "GET",
516
- caminho_da_rota: "/notificacao",
517
- credencial_de_acesso,
518
- parametros_de_consulta: parametros,
519
- formato_da_resposta: "json",
520
- }, opcoes_da_chamada);
521
- }
522
- /**
523
- * Marca todas as notificações como lidas
524
- *
525
- * Livre para qualquer usuário autenticado: vale sempre para o colaborador de quem está logado. Marca de uma vez todas as notificações da pessoa como lidas (ou como não lidas, com `lida: false`). Devolve quantas mudaram em `alteradas`.
526
- *
527
- * `PATCH /notificacao`
528
- */
529
- export function marcar_todas_notificacao(credencial_de_acesso, corpo_da_requisicao, opcoes_da_chamada) {
530
- return chamar_servico({
531
- servico: SERVICO_DESTA_API,
532
- metodo_http: "PATCH",
533
- caminho_da_rota: "/notificacao",
534
- credencial_de_acesso,
535
- corpo_json: corpo_da_requisicao,
536
- formato_da_resposta: "json",
537
- }, opcoes_da_chamada);
538
- }
539
- /**
540
- * Busca notificações por filtro
541
- *
542
- * Livre para qualquer usuário autenticado: vale sempre para o colaborador de quem está logado. Devolve até 500 notificações da pessoa, da mais nova para a mais antiga. `lida` filtra lidas ou não lidas e `tipo` é `ATRIBUICAO`, `COMENTARIO`, `MENCAO`, `STATUS`, `PRAZO` ou `TICKET`.
543
- *
544
- * `GET /notificacao/filtro`
545
- */
546
- export function buscar_pelo_filtro_notificacao(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
547
- return chamar_servico({
548
- servico: SERVICO_DESTA_API,
549
- metodo_http: "GET",
550
- caminho_da_rota: "/notificacao/filtro",
551
- credencial_de_acesso,
552
- parametros_de_consulta: parametros,
553
- formato_da_resposta: "json",
554
- }, opcoes_da_chamada);
555
- }
556
- /**
557
- * Busca uma notificação pelo id
558
- *
559
- * Livre para qualquer usuário autenticado: vale sempre para o colaborador de quem está logado. Só encontra as notificações da própria pessoa.
560
- *
561
- * `GET /notificacao/{id}`
562
- */
563
- export function buscar_pelo_id_notificacao(credencial_de_acesso, id, opcoes_da_chamada) {
564
- return chamar_servico({
565
- servico: SERVICO_DESTA_API,
566
- metodo_http: "GET",
567
- caminho_da_rota: `/notificacao/${codificar_parametro_de_caminho(id)}`,
568
- credencial_de_acesso,
569
- formato_da_resposta: "json",
570
- }, opcoes_da_chamada);
571
- }
572
- /**
573
- * Marca uma notificação como lida ou não lida
574
- *
575
- * Livre para qualquer usuário autenticado: vale sempre para o colaborador de quem está logado. Muda `lida` de uma notificação da própria pessoa.
576
- *
577
- * `PATCH /notificacao/{id}`
578
- */
579
- export function atualizar_pelo_id_notificacao(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
580
- return chamar_servico({
581
- servico: SERVICO_DESTA_API,
582
- metodo_http: "PATCH",
583
- caminho_da_rota: `/notificacao/${codificar_parametro_de_caminho(id)}`,
584
- credencial_de_acesso,
585
- corpo_json: corpo_da_requisicao,
586
- formato_da_resposta: "json",
587
- }, opcoes_da_chamada);
588
- }
589
- /**
590
- * Exclui uma notificação pelo id
591
- *
592
- * Livre para qualquer usuário autenticado: vale sempre para o colaborador de quem está logado. Tira a notificação da caixa de entrada (exclusão lógica).
593
- *
594
- * `DELETE /notificacao/{id}`
595
- */
596
- export function deletar_pelo_id_notificacao(credencial_de_acesso, id, opcoes_da_chamada) {
597
- return chamar_servico({
598
- servico: SERVICO_DESTA_API,
599
- metodo_http: "DELETE",
600
- caminho_da_rota: `/notificacao/${codificar_parametro_de_caminho(id)}`,
601
- credencial_de_acesso,
602
- formato_da_resposta: "sem_conteudo",
603
- }, opcoes_da_chamada);
604
- }
605
- /**
606
- * Lista os projetos paginados
607
- *
608
- * Exige a permissão de leitura na área `projetos` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Lista os projetos do mais recente atualizado para o mais antigo, sempre 50 por página: `tamanho` é ignorado. Aceita os mesmos filtros do `GET /projeto/filtro`. Visibilidade: projeto com `visibilidade` `MEMBROS` só aparece para o dono, os membros e o master do TermoAuth; para os demais ele, as tarefas e as seções dele somem das listas e o acesso pelo id (ou por `projeto_id`/`tarefa_id`/`secao_id` na query) responde `404`. O responsável sempre enxerga a própria tarefa.
609
- *
610
- * `GET /projeto`
611
- */
612
- export function buscar_paginador_projeto(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
11
+ export function buscar_paginador_board(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
613
12
  return chamar_servico({
614
13
  servico: SERVICO_DESTA_API,
615
14
  metodo_http: "GET",
616
- caminho_da_rota: "/projeto",
15
+ caminho_da_rota: "/board",
617
16
  credencial_de_acesso,
618
17
  parametros_de_consulta: parametros,
619
18
  formato_da_resposta: "json",
620
19
  }, opcoes_da_chamada);
621
20
  }
622
21
  /**
623
- * Cadastra um projeto
22
+ * Cria um board
624
23
  *
625
- * Exige a permissão `criar` na área `projetos`. `visibilidade` é `ORGANIZACAO` (padrão: todos com a área `projetos` veem) ou `MEMBROS` (só quem está vinculado ao projeto). Cria o projeto ligado aos aplicativos de `aplicativo_ids`, com os membros de `membro_ids` (o dono e quem criou entram sempre como membros). `nome` é obrigatório (até 120 caracteres); `descricao` vai até 5000; `cor` no formato `#00397c`; `status` é `NO_PRAZO` (padrão), `EM_RISCO`, `ATRASADO`, `PAUSADO` ou `CONCLUIDO`; `dono_id` tem padrão em quem criou; `inicio` não pode passar do `prazo`. `secoes` são os nomes das colunas do quadro, na ordem (padrão "A fazer", "Em andamento" e "Concluído").
24
+ * Livre para todo colaborador logado; quem cria é o dono. `nome` é obrigatório (até 120 caracteres), `descricao` vai até 500, `cor` segue o formato `#00397c` (padrão `#00397c`) e `visibilidade` é `ORGANIZACAO` (padrão, todos veem e editam) ou `MEMBROS` (só o dono e os `membro_ids`). O canvas nasce vazio e é editado em tempo real em `GET /board/ws/{id}?token=<JWT>` (WebSocket no protocolo do Yjs).
626
25
  *
627
- * `POST /projeto`
26
+ * `POST /board`
628
27
  */
629
- export function criar_projeto(credencial_de_acesso, corpo_da_requisicao, opcoes_da_chamada) {
28
+ export function criar_board(credencial_de_acesso, corpo_da_requisicao, opcoes_da_chamada) {
630
29
  return chamar_servico({
631
30
  servico: SERVICO_DESTA_API,
632
31
  metodo_http: "POST",
633
- caminho_da_rota: "/projeto",
32
+ caminho_da_rota: "/board",
634
33
  credencial_de_acesso,
635
34
  corpo_json: corpo_da_requisicao,
636
35
  formato_da_resposta: "json",
637
36
  }, opcoes_da_chamada);
638
37
  }
639
38
  /**
640
- * Lista básica de projetos para seleção
39
+ * Lista básica de boards para seleção
641
40
  *
642
- * Exige a permissão de leitura na área `projetos` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Devolve id, nome e cor dos projetos não arquivados, em ordem alfabética. `busca` procura no nome e `aplicativo_id` limita aos projetos do aplicativo. `pagina` começa em 1 e `tamanho` tem padrão 10. Visibilidade: projeto com `visibilidade` `MEMBROS` só aparece para o dono, os membros e o master do TermoAuth; para os demais ele, as tarefas e as seções dele somem das listas e o acesso pelo id (ou por `projeto_id`/`tarefa_id`/`secao_id` na query) responde `404`. O responsável sempre enxerga a própria tarefa.
41
+ * Id, nome e cor dos boards que a pessoa enxerga, em ordem alfabética. `busca` procura o trecho no nome. `pagina` começa em 1 e `tamanho` tem padrão 10.
643
42
  *
644
- * `GET /projeto/autocomplete`
43
+ * `GET /board/autocomplete`
645
44
  */
646
- export function buscar_auto_complete_projeto(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
45
+ export function buscar_auto_complete_board(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
647
46
  return chamar_servico({
648
47
  servico: SERVICO_DESTA_API,
649
48
  metodo_http: "GET",
650
- caminho_da_rota: "/projeto/autocomplete",
49
+ caminho_da_rota: "/board/autocomplete",
651
50
  credencial_de_acesso,
652
51
  parametros_de_consulta: parametros,
653
52
  formato_da_resposta: "json",
654
53
  }, opcoes_da_chamada);
655
54
  }
656
55
  /**
657
- * Busca projetos por filtro
56
+ * Busca boards por filtro
658
57
  *
659
- * Exige a permissão de leitura na área `projetos` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Devolve até 500 projetos em ordem alfabética. `busca` procura no nome e na descrição; `status` é exato; `aplicativo_id` traz os projetos ligados ao aplicativo; `membro_id` os projetos em que o colaborador é dono ou membro; `arquivado` tem padrão `false`. Visibilidade: projeto com `visibilidade` `MEMBROS` só aparece para o dono, os membros e o master do TermoAuth; para os demais ele, as tarefas e as seções dele somem das listas e o acesso pelo id (ou por `projeto_id`/`tarefa_id`/`secao_id` na query) responde `404`. O responsável sempre enxerga a própria tarefa.
58
+ * Todos os boards que a pessoa enxerga, do mais recente para o mais antigo. `nome` procura o trecho no nome sem diferenciar maiúsculas, `favoritos=true` traz só os favoritos de quem pediu e `dono_id` só os de um dono.
660
59
  *
661
- * `GET /projeto/filtro`
60
+ * `GET /board/filtro`
662
61
  */
663
- export function buscar_pelo_filtro_projeto(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
62
+ export function buscar_pelo_filtro_board(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
664
63
  return chamar_servico({
665
64
  servico: SERVICO_DESTA_API,
666
65
  metodo_http: "GET",
667
- caminho_da_rota: "/projeto/filtro",
66
+ caminho_da_rota: "/board/filtro",
668
67
  credencial_de_acesso,
669
68
  parametros_de_consulta: parametros,
670
69
  formato_da_resposta: "json",
671
70
  }, opcoes_da_chamada);
672
71
  }
673
72
  /**
674
- * Busca um projeto pelo id
73
+ * Baixa uma imagem do canvas guardada no banco
675
74
  *
676
- * Exige a permissão de leitura na área `projetos` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Devolve o projeto com dono, aplicativos, membros e a contagem das tarefas principais (total, concluídas e atrasadas). Visibilidade: projeto com `visibilidade` `MEMBROS` só aparece para o dono, os membros e o master do TermoAuth; para os demais ele, as tarefas e as seções dele somem das listas e o acesso pelo id (ou por `projeto_id`/`tarefa_id`/`secao_id` na query) responde `404`. O responsável sempre enxerga a própria tarefa.
75
+ * Pública (o `<img>` do canvas não manda token): devolve os bytes da imagem que ficou no banco porque o TermoBucket falhou, com cache longo.
677
76
  *
678
- * `GET /projeto/{id}`
77
+ * `GET /board/imagem/{id}`
679
78
  */
680
- export function buscar_pelo_id_projeto(credencial_de_acesso, id, opcoes_da_chamada) {
79
+ export function buscar_imagem_board(id, opcoes_da_chamada) {
681
80
  return chamar_servico({
682
81
  servico: SERVICO_DESTA_API,
683
82
  metodo_http: "GET",
684
- caminho_da_rota: `/projeto/${codificar_parametro_de_caminho(id)}`,
685
- credencial_de_acesso,
686
- formato_da_resposta: "json",
687
- }, opcoes_da_chamada);
688
- }
689
- /**
690
- * Atualiza um projeto pelo id
691
- *
692
- * Exige a permissão `editar` na área `projetos`. Atualização parcial com as regras do cadastro (inclusive `visibilidade`: `ORGANIZACAO` ou `MEMBROS`). Texto vazio em `descricao` apaga; `null` em `dono_id`, `inicio` ou `prazo` apaga o valor. `aplicativo_ids` e `membro_ids`, quando enviados, substituem a lista inteira (o dono continua membro). `arquivado` tira o projeto das listas. Visibilidade: projeto com `visibilidade` `MEMBROS` só aparece para o dono, os membros e o master do TermoAuth; para os demais ele, as tarefas e as seções dele somem das listas e o acesso pelo id (ou por `projeto_id`/`tarefa_id`/`secao_id` na query) responde `404`. O responsável sempre enxerga a própria tarefa.
693
- *
694
- * `PATCH /projeto/{id}`
695
- */
696
- export function atualizar_pelo_id_projeto(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
697
- return chamar_servico({
698
- servico: SERVICO_DESTA_API,
699
- metodo_http: "PATCH",
700
- caminho_da_rota: `/projeto/${codificar_parametro_de_caminho(id)}`,
701
- credencial_de_acesso,
702
- corpo_json: corpo_da_requisicao,
703
- formato_da_resposta: "json",
704
- }, opcoes_da_chamada);
705
- }
706
- /**
707
- * Exclui um projeto pelo id
708
- *
709
- * Exige a permissão `deletar` na área `projetos`. Exclusão lógica do projeto, das colunas e das tarefas dele. Visibilidade: projeto com `visibilidade` `MEMBROS` só aparece para o dono, os membros e o master do TermoAuth; para os demais ele, as tarefas e as seções dele somem das listas e o acesso pelo id (ou por `projeto_id`/`tarefa_id`/`secao_id` na query) responde `404`. O responsável sempre enxerga a própria tarefa.
710
- *
711
- * `DELETE /projeto/{id}`
712
- */
713
- export function deletar_pelo_id_projeto(credencial_de_acesso, id, opcoes_da_chamada) {
714
- return chamar_servico({
715
- servico: SERVICO_DESTA_API,
716
- metodo_http: "DELETE",
717
- caminho_da_rota: `/projeto/${codificar_parametro_de_caminho(id)}`,
718
- credencial_de_acesso,
83
+ caminho_da_rota: `/board/imagem/${codificar_parametro_de_caminho(id)}`,
719
84
  formato_da_resposta: "sem_conteudo",
720
85
  }, opcoes_da_chamada);
721
86
  }
722
87
  /**
723
- * Abre um ticket pelo aplicativo atendido
724
- *
725
- * Rota pública, sem o token do TermoAuth: o backend do aplicativo se identifica pela chave pública dele (`pk_live_...`, a mesma do cadastro do aplicativo) no cabeçalho `X-Chave-Publica`. Só aplicativo ativo abre ticket. `titulo` (até 200), `descricao` (até 20000) e `solicitante_nome` (até 120) são obrigatórios; `solicitante_email`, `origem_url` (a tela onde o problema aconteceu), `tipo` e `prioridade` seguem as regras do `POST /ticket`. O ticket entra na fila com o canal `APLICATIVO`, o status `NOVO` e o prazo do SLA. Chamada de servidor para servidor: o navegador recebe erro de CORS.
726
- *
727
- * `POST /publico/ticket`
728
- */
729
- export function criar_pelo_aplicativo_ticket(parametros, corpo_da_requisicao, opcoes_da_chamada) {
730
- return chamar_servico({
731
- servico: SERVICO_DESTA_API,
732
- metodo_http: "POST",
733
- caminho_da_rota: "/publico/ticket",
734
- cabecalhos: { "X-Chave-Publica": parametros["X-Chave-Publica"] },
735
- corpo_json: corpo_da_requisicao,
736
- formato_da_resposta: "json",
737
- }, opcoes_da_chamada);
738
- }
739
- /**
740
- * Lista as seções paginadas
741
- *
742
- * Exige a permissão de leitura na área `projetos` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Lista na ordem do quadro, sempre 50 por página: `tamanho` é ignorado. `projeto_id` limita a um projeto.
743
- *
744
- * `GET /secao`
745
- */
746
- export function buscar_paginador_secao(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
747
- return chamar_servico({
748
- servico: SERVICO_DESTA_API,
749
- metodo_http: "GET",
750
- caminho_da_rota: "/secao",
751
- credencial_de_acesso,
752
- parametros_de_consulta: parametros,
753
- formato_da_resposta: "json",
754
- }, opcoes_da_chamada);
755
- }
756
- /**
757
- * Cadastra uma seção (coluna do quadro)
758
- *
759
- * Exige a permissão `criar` na área `projetos`. Cria a coluna no projeto. `nome` é obrigatório (até 80 caracteres). Sem `ordem`, entra no fim do quadro.
760
- *
761
- * `POST /secao`
762
- */
763
- export function criar_secao(credencial_de_acesso, corpo_da_requisicao, opcoes_da_chamada) {
764
- return chamar_servico({
765
- servico: SERVICO_DESTA_API,
766
- metodo_http: "POST",
767
- caminho_da_rota: "/secao",
768
- credencial_de_acesso,
769
- corpo_json: corpo_da_requisicao,
770
- formato_da_resposta: "json",
771
- }, opcoes_da_chamada);
772
- }
773
- /**
774
- * Lista básica de seções para seleção
775
- *
776
- * Exige a permissão de leitura na área `projetos` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Devolve id e nome em ordem alfabética. `projeto_id` limita a um projeto e `busca` procura no nome.
777
- *
778
- * `GET /secao/autocomplete`
779
- */
780
- export function buscar_auto_complete_secao(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
781
- return chamar_servico({
782
- servico: SERVICO_DESTA_API,
783
- metodo_http: "GET",
784
- caminho_da_rota: "/secao/autocomplete",
785
- credencial_de_acesso,
786
- parametros_de_consulta: parametros,
787
- formato_da_resposta: "json",
788
- }, opcoes_da_chamada);
789
- }
790
- /**
791
- * Busca seções por filtro
792
- *
793
- * Exige a permissão de leitura na área `projetos` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Devolve as colunas na ordem do quadro. `projeto_id` limita a um projeto e `nome` procura o trecho no nome.
794
- *
795
- * `GET /secao/filtro`
796
- */
797
- export function buscar_pelo_filtro_secao(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
798
- return chamar_servico({
799
- servico: SERVICO_DESTA_API,
800
- metodo_http: "GET",
801
- caminho_da_rota: "/secao/filtro",
802
- credencial_de_acesso,
803
- parametros_de_consulta: parametros,
804
- formato_da_resposta: "json",
805
- }, opcoes_da_chamada);
806
- }
807
- /**
808
- * Busca uma seção pelo id
88
+ * Busca um board pelo id
809
89
  *
810
- * Exige a permissão de leitura na área `projetos` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Seção excluída não é encontrada.
90
+ * Devolve o board com o dono, os membros, se é favorito de quem pediu e se essa pessoa pode gerenciá-lo (`pode_gerenciar`: dono ou master do TermoAuth). Board `MEMBROS` de que a pessoa não participa responde `404`, como se não existisse.
811
91
  *
812
- * `GET /secao/{id}`
92
+ * `GET /board/{id}`
813
93
  */
814
- export function buscar_pelo_id_secao(credencial_de_acesso, id, opcoes_da_chamada) {
94
+ export function buscar_pelo_id_board(credencial_de_acesso, id, opcoes_da_chamada) {
815
95
  return chamar_servico({
816
96
  servico: SERVICO_DESTA_API,
817
97
  metodo_http: "GET",
818
- caminho_da_rota: `/secao/${codificar_parametro_de_caminho(id)}`,
98
+ caminho_da_rota: `/board/${codificar_parametro_de_caminho(id)}`,
819
99
  credencial_de_acesso,
820
100
  formato_da_resposta: "json",
821
101
  }, opcoes_da_chamada);
822
102
  }
823
103
  /**
824
- * Atualiza uma seção pelo id
104
+ * Atualiza um board pelo id
825
105
  *
826
- * Exige a permissão `editar` na área `projetos`. Renomeia (`nome`) ou reposiciona (`ordem`, decimal: para pôr entre duas colunas use a média das ordens delas).
106
+ * Atualização parcial. `nome`, `descricao` (`null` apaga) e `cor` valem para quem enxerga o board; `visibilidade` e `membro_ids` (a lista inteira) só para o dono ou o master do TermoAuth. `favorito` marca ou desmarca o board como favorito de quem pediu, e `miniatura` é o SVG (até 200 KB) da prévia mostrada na lista; esses dois não mudam a ordem de recentes.
827
107
  *
828
- * `PATCH /secao/{id}`
108
+ * `PATCH /board/{id}`
829
109
  */
830
- export function atualizar_pelo_id_secao(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
110
+ export function atualizar_pelo_id_board(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
831
111
  return chamar_servico({
832
112
  servico: SERVICO_DESTA_API,
833
113
  metodo_http: "PATCH",
834
- caminho_da_rota: `/secao/${codificar_parametro_de_caminho(id)}`,
114
+ caminho_da_rota: `/board/${codificar_parametro_de_caminho(id)}`,
835
115
  credencial_de_acesso,
836
116
  corpo_json: corpo_da_requisicao,
837
117
  formato_da_resposta: "json",
838
118
  }, opcoes_da_chamada);
839
119
  }
840
120
  /**
841
- * Exclui uma seção pelo id
121
+ * Exclui um board pelo id
842
122
  *
843
- * Exige a permissão `deletar` na área `projetos`. Exclusão lógica: as tarefas da coluna vão para a primeira coluna que sobrar no projeto.
123
+ * Só o dono ou o master do TermoAuth. Exclusão lógica: o board some das listas e quem estava com ele aberto é desconectado.
844
124
  *
845
- * `DELETE /secao/{id}`
125
+ * `DELETE /board/{id}`
846
126
  */
847
- export function deletar_pelo_id_secao(credencial_de_acesso, id, opcoes_da_chamada) {
127
+ export function deletar_pelo_id_board(credencial_de_acesso, id, opcoes_da_chamada) {
848
128
  return chamar_servico({
849
129
  servico: SERVICO_DESTA_API,
850
130
  metodo_http: "DELETE",
851
- caminho_da_rota: `/secao/${codificar_parametro_de_caminho(id)}`,
131
+ caminho_da_rota: `/board/${codificar_parametro_de_caminho(id)}`,
852
132
  credencial_de_acesso,
853
133
  formato_da_resposta: "sem_conteudo",
854
134
  }, opcoes_da_chamada);
855
135
  }
856
136
  /**
857
- * Lista as tarefas paginadas
858
- *
859
- * Exige a permissão de leitura na área `projetos` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Lista da mais recente para a mais antiga, sempre 50 por página: `tamanho` é ignorado. Filtra por `projeto_id`, `responsavel_id`, `concluida` e `busca` (título). Visibilidade: projeto com `visibilidade` `MEMBROS` só aparece para o dono, os membros e o master do TermoAuth; para os demais ele, as tarefas e as seções dele somem das listas e o acesso pelo id (ou por `projeto_id`/`tarefa_id`/`secao_id` na query) responde `404`. O responsável sempre enxerga a própria tarefa.
860
- *
861
- * `GET /tarefa`
862
- */
863
- export function buscar_paginador_tarefa(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
864
- return chamar_servico({
865
- servico: SERVICO_DESTA_API,
866
- metodo_http: "GET",
867
- caminho_da_rota: "/tarefa",
868
- credencial_de_acesso,
869
- parametros_de_consulta: parametros,
870
- formato_da_resposta: "json",
871
- }, opcoes_da_chamada);
872
- }
873
- /**
874
- * Cadastra uma tarefa
137
+ * Duplica um board
875
138
  *
876
- * Exige a permissão `criar` na área `projetos`. Cria a tarefa no projeto. Sem `secao_id`, entra na primeira coluna; com `tarefa_pai_id`, vira subtarefa (sem coluna; subtarefa não tem subtarefas). `ticket_id` liga a tarefa ao ticket de suporte que a originou. `titulo` é obrigatório (até 300 caracteres); `descricao` até 20000; `prioridade` é `BAIXA`, `MEDIA`, `ALTA` ou `URGENTE`; `estimativa` de 0 a 10000 pontos; `inicio` não pode passar do `prazo`. Quem criou fica como criador, a atividade ganha a linha de criação e o responsável recebe uma notificação. Visibilidade: projeto com `visibilidade` `MEMBROS` só aparece para o dono, os membros e o master do TermoAuth; para os demais ele, as tarefas e as seções dele somem das listas e o acesso pelo id (ou por `projeto_id`/`tarefa_id`/`secao_id` na query) responde `404`. O responsável sempre enxerga a própria tarefa.
139
+ * Cria "Cópia de <nome>" com todo o conteúdo do canvas. Quem pediu vira o dono da cópia, que mantém a visibilidade do original, sem membros e sem favoritos.
877
140
  *
878
- * `POST /tarefa`
141
+ * `POST /board/{id}/duplicar`
879
142
  */
880
- export function criar_tarefa(credencial_de_acesso, corpo_da_requisicao, opcoes_da_chamada) {
143
+ export function duplicar_board(credencial_de_acesso, id, opcoes_da_chamada) {
881
144
  return chamar_servico({
882
145
  servico: SERVICO_DESTA_API,
883
146
  metodo_http: "POST",
884
- caminho_da_rota: "/tarefa",
885
- credencial_de_acesso,
886
- corpo_json: corpo_da_requisicao,
887
- formato_da_resposta: "json",
888
- }, opcoes_da_chamada);
889
- }
890
- /**
891
- * Lista básica de tarefas para seleção
892
- *
893
- * Exige a permissão de leitura na área `projetos` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Devolve id, título e nome do projeto, em ordem alfabética. `busca` procura no título e `projeto_id` limita a um projeto. Visibilidade: projeto com `visibilidade` `MEMBROS` só aparece para o dono, os membros e o master do TermoAuth; para os demais ele, as tarefas e as seções dele somem das listas e o acesso pelo id (ou por `projeto_id`/`tarefa_id`/`secao_id` na query) responde `404`. O responsável sempre enxerga a própria tarefa.
894
- *
895
- * `GET /tarefa/autocomplete`
896
- */
897
- export function buscar_auto_complete_tarefa(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
898
- return chamar_servico({
899
- servico: SERVICO_DESTA_API,
900
- metodo_http: "GET",
901
- caminho_da_rota: "/tarefa/autocomplete",
902
- credencial_de_acesso,
903
- parametros_de_consulta: parametros,
904
- formato_da_resposta: "json",
905
- }, opcoes_da_chamada);
906
- }
907
- /**
908
- * Busca tarefas por filtro
909
- *
910
- * Exige a permissão de leitura na área `projetos` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Devolve até 2000 tarefas. É a leitura do quadro, da lista, do calendário, do cronograma e de "Minhas tarefas". Os filtros se somam: `projeto_id`, `secao_id`, `responsavel_id`, `tarefa_pai_id` (subtarefas de uma tarefa), `ticket_id`, `aplicativo_id` (projetos ligados ao aplicativo), `etiqueta_id`, `somente_principais` (sem subtarefas), `concluida`, `prazo_de`/`prazo_ate` e `busca` (título ou descrição). A ordem é a do quadro (coluna e posição) ou, com `ordenar_por_prazo=true`, o prazo mais próximo primeiro.
911
- *
912
- * `GET /tarefa/filtro`
913
- */
914
- export function buscar_pelo_filtro_tarefa(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
915
- return chamar_servico({
916
- servico: SERVICO_DESTA_API,
917
- metodo_http: "GET",
918
- caminho_da_rota: "/tarefa/filtro",
919
- credencial_de_acesso,
920
- parametros_de_consulta: parametros,
921
- formato_da_resposta: "json",
922
- }, opcoes_da_chamada);
923
- }
924
- /**
925
- * Busca uma tarefa pelo id
926
- *
927
- * Exige a permissão de leitura na área `projetos` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Devolve a tarefa com projeto, coluna, responsável, criador, etiquetas e as contagens de subtarefas, comentários e anexos. Visibilidade: projeto com `visibilidade` `MEMBROS` só aparece para o dono, os membros e o master do TermoAuth; para os demais ele, as tarefas e as seções dele somem das listas e o acesso pelo id (ou por `projeto_id`/`tarefa_id`/`secao_id` na query) responde `404`. O responsável sempre enxerga a própria tarefa.
928
- *
929
- * `GET /tarefa/{id}`
930
- */
931
- export function buscar_pelo_id_tarefa(credencial_de_acesso, id, opcoes_da_chamada) {
932
- return chamar_servico({
933
- servico: SERVICO_DESTA_API,
934
- metodo_http: "GET",
935
- caminho_da_rota: `/tarefa/${codificar_parametro_de_caminho(id)}`,
936
- credencial_de_acesso,
937
- formato_da_resposta: "json",
938
- }, opcoes_da_chamada);
939
- }
940
- /**
941
- * Atualiza uma tarefa pelo id
942
- *
943
- * Exige a permissão `editar` na área `projetos`. Atualização parcial com as regras do cadastro. Mover no quadro é mandar `secao_id` (coluna do mesmo projeto) e `ordem` (decimal: a média entre os vizinhos). `null` em `responsavel_id`, `inicio`, `prazo`, `prioridade` ou `estimativa` apaga o valor; texto vazio em `descricao` apaga. `concluida` grava ou apaga `concluida_em`. `etiqueta_ids` substitui a lista. Cada mudança entra na atividade da tarefa; o novo responsável e, ao concluir, o criador recebem notificação. Visibilidade: projeto com `visibilidade` `MEMBROS` só aparece para o dono, os membros e o master do TermoAuth; para os demais ele, as tarefas e as seções dele somem das listas e o acesso pelo id (ou por `projeto_id`/`tarefa_id`/`secao_id` na query) responde `404`. O responsável sempre enxerga a própria tarefa.
944
- *
945
- * `PATCH /tarefa/{id}`
946
- */
947
- export function atualizar_pelo_id_tarefa(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
948
- return chamar_servico({
949
- servico: SERVICO_DESTA_API,
950
- metodo_http: "PATCH",
951
- caminho_da_rota: `/tarefa/${codificar_parametro_de_caminho(id)}`,
952
- credencial_de_acesso,
953
- corpo_json: corpo_da_requisicao,
954
- formato_da_resposta: "json",
955
- }, opcoes_da_chamada);
956
- }
957
- /**
958
- * Exclui uma tarefa pelo id
959
- *
960
- * Exige a permissão `deletar` na área `projetos`. Exclusão lógica da tarefa e das subtarefas dela. Visibilidade: projeto com `visibilidade` `MEMBROS` só aparece para o dono, os membros e o master do TermoAuth; para os demais ele, as tarefas e as seções dele somem das listas e o acesso pelo id (ou por `projeto_id`/`tarefa_id`/`secao_id` na query) responde `404`. O responsável sempre enxerga a própria tarefa.
961
- *
962
- * `DELETE /tarefa/{id}`
963
- */
964
- export function deletar_pelo_id_tarefa(credencial_de_acesso, id, opcoes_da_chamada) {
965
- return chamar_servico({
966
- servico: SERVICO_DESTA_API,
967
- metodo_http: "DELETE",
968
- caminho_da_rota: `/tarefa/${codificar_parametro_de_caminho(id)}`,
969
- credencial_de_acesso,
970
- formato_da_resposta: "sem_conteudo",
971
- }, opcoes_da_chamada);
972
- }
973
- /**
974
- * Fila de tickets paginada
975
- *
976
- * Exige a permissão de leitura na área `tickets` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). A fila de atendimento: abertos primeiro, do mais urgente e com prazo mais próximo para o menos urgente; depois os resolvidos e fechados. Sempre 50 por página: `tamanho` é ignorado. Aceita os mesmos filtros do `GET /ticket/filtro`.
977
- *
978
- * `GET /ticket`
979
- */
980
- export function buscar_paginador_ticket(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
981
- return chamar_servico({
982
- servico: SERVICO_DESTA_API,
983
- metodo_http: "GET",
984
- caminho_da_rota: "/ticket",
147
+ caminho_da_rota: `/board/${codificar_parametro_de_caminho(id)}/duplicar`,
985
148
  credencial_de_acesso,
986
- parametros_de_consulta: parametros,
987
149
  formato_da_resposta: "json",
988
150
  }, opcoes_da_chamada);
989
151
  }
990
152
  /**
991
- * Abre um ticket de suporte
153
+ * Envia uma imagem para o canvas
992
154
  *
993
- * Exige a permissão `criar` na área `tickets`. Abre o ticket para um aplicativo. `titulo` (até 200) e `descricao` (até 20000) são obrigatórios. `tipo` é `BUG`, `DUVIDA` (padrão), `MELHORIA`, `ACESSO` ou `OUTRO`; `prioridade` é `BAIXA`, `MEDIA` (padrão), `ALTA` ou `URGENTE`; `canal` é `PAINEL` (padrão), `APLICATIVO`, `EMAIL`, `WHATSAPP` ou `TELEFONE`. O solicitante é o colaborador de `solicitante_id`, ou alguém de fora por `solicitante_nome` e `solicitante_email`; sem nenhum, é quem abriu. Sem `prazo`, vale o SLA da prioridade (urgente 4 h, alta 24 h, média 72 h, baixa 7 dias). Com `responsavel_id` o ticket já nasce em atendimento e o responsável é notificado.
155
+ * Guarda uma imagem PNG, JPG, GIF ou WEBP de até 10 MB (`arquivo_base64`, cru com `tipo` ou como data URL) e devolve o endereço público para o elemento de imagem do canvas. A imagem vai ao TermoBucket como arquivo público; se o bucket falhar, fica no banco e o endereço é relativo à API (`/board/imagem/{id}`).
994
156
  *
995
- * `POST /ticket`
157
+ * `POST /board/{id}/imagem`
996
158
  */
997
- export function criar_ticket(credencial_de_acesso, corpo_da_requisicao, opcoes_da_chamada) {
159
+ export function guardar_imagem_board(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
998
160
  return chamar_servico({
999
161
  servico: SERVICO_DESTA_API,
1000
162
  metodo_http: "POST",
1001
- caminho_da_rota: "/ticket",
1002
- credencial_de_acesso,
1003
- corpo_json: corpo_da_requisicao,
1004
- formato_da_resposta: "json",
1005
- }, opcoes_da_chamada);
1006
- }
1007
- /**
1008
- * Lista básica de tickets para seleção
1009
- *
1010
- * Exige a permissão de leitura na área `tickets` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Devolve id, número e título, do número maior para o menor. `busca` procura no título ou pelo número; `aplicativo_id` limita a um aplicativo.
1011
- *
1012
- * `GET /ticket/autocomplete`
1013
- */
1014
- export function buscar_auto_complete_ticket(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
1015
- return chamar_servico({
1016
- servico: SERVICO_DESTA_API,
1017
- metodo_http: "GET",
1018
- caminho_da_rota: "/ticket/autocomplete",
1019
- credencial_de_acesso,
1020
- parametros_de_consulta: parametros,
1021
- formato_da_resposta: "json",
1022
- }, opcoes_da_chamada);
1023
- }
1024
- /**
1025
- * Busca tickets por filtro
1026
- *
1027
- * Exige a permissão de leitura na área `tickets` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Devolve até 2000 tickets do mais novo para o mais antigo. Os filtros se somam: `aplicativo_id`, `status`, `abertos` (sem os resolvidos e fechados; `false` só eles), `responsavel_id`, `sem_responsavel`, `solicitante_id`, `prioridade`, `tipo`, `atrasados` e `busca` (título, descrição, solicitante ou número, com ou sem #).
1028
- *
1029
- * `GET /ticket/filtro`
1030
- */
1031
- export function buscar_pelo_filtro_ticket(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
1032
- return chamar_servico({
1033
- servico: SERVICO_DESTA_API,
1034
- metodo_http: "GET",
1035
- caminho_da_rota: "/ticket/filtro",
1036
- credencial_de_acesso,
1037
- parametros_de_consulta: parametros,
1038
- formato_da_resposta: "json",
1039
- }, opcoes_da_chamada);
1040
- }
1041
- /**
1042
- * Busca um ticket pelo id
1043
- *
1044
- * Exige a permissão de leitura na área `tickets` (qualquer das ações `ler`, `criar`, `editar` ou `deletar` libera a leitura). Devolve o ticket com aplicativo, solicitante, responsável, prazo (e se está atrasado), as tarefas de projeto criadas a partir dele e as contagens de comentários e anexos.
1045
- *
1046
- * `GET /ticket/{id}`
1047
- */
1048
- export function buscar_pelo_id_ticket(credencial_de_acesso, id, opcoes_da_chamada) {
1049
- return chamar_servico({
1050
- servico: SERVICO_DESTA_API,
1051
- metodo_http: "GET",
1052
- caminho_da_rota: `/ticket/${codificar_parametro_de_caminho(id)}`,
1053
- credencial_de_acesso,
1054
- formato_da_resposta: "json",
1055
- }, opcoes_da_chamada);
1056
- }
1057
- /**
1058
- * Atualiza um ticket pelo id
1059
- *
1060
- * Exige a permissão `editar` na área `tickets`. Atualização parcial com as regras da abertura, mais `status` (`NOVO`, `EM_ATENDIMENTO`, `AGUARDANDO`, `RESOLVIDO`, `FECHADO`). Resolver ou fechar grava a data; reabrir apaga. Sair de `NOVO` conta como primeira resposta. Trocar a `prioridade` sem mandar `prazo` refaz o prazo pelo SLA a partir da abertura. `null` em `responsavel_id`, `prazo` ou `solicitante_email` apaga o valor. Cada mudança entra na atividade; o novo responsável e o solicitante (na troca de status) são notificados.
1061
- *
1062
- * `PATCH /ticket/{id}`
1063
- */
1064
- export function atualizar_pelo_id_ticket(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
1065
- return chamar_servico({
1066
- servico: SERVICO_DESTA_API,
1067
- metodo_http: "PATCH",
1068
- caminho_da_rota: `/ticket/${codificar_parametro_de_caminho(id)}`,
163
+ caminho_da_rota: `/board/${codificar_parametro_de_caminho(id)}/imagem`,
1069
164
  credencial_de_acesso,
1070
165
  corpo_json: corpo_da_requisicao,
1071
166
  formato_da_resposta: "json",
1072
167
  }, opcoes_da_chamada);
1073
168
  }
1074
- /**
1075
- * Exclui um ticket pelo id
1076
- *
1077
- * Exige a permissão `deletar` na área `tickets`. Exclusão lógica. As tarefas criadas a partir do ticket continuam nos projetos.
1078
- *
1079
- * `DELETE /ticket/{id}`
1080
- */
1081
- export function deletar_pelo_id_ticket(credencial_de_acesso, id, opcoes_da_chamada) {
1082
- return chamar_servico({
1083
- servico: SERVICO_DESTA_API,
1084
- metodo_http: "DELETE",
1085
- caminho_da_rota: `/ticket/${codificar_parametro_de_caminho(id)}`,
1086
- credencial_de_acesso,
1087
- formato_da_resposta: "sem_conteudo",
1088
- }, opcoes_da_chamada);
1089
- }