Anexo
5 funções do TermoSupport para anexo.
// npm install termo_core --save-exact
import * as support from "termo_core/support";
// ou: import { support } from "termo_core";| Função | Rota | O que faz |
|---|---|---|
criar_anexo | POST /anexo | Anexa um arquivo ou link |
buscar_pelo_filtro_anexo | GET /anexo/filtro | Lista os anexos de uma tarefa ou ticket |
buscar_pelo_id_anexo | GET /anexo/{id} | Baixa um anexo pelo id |
atualizar_pelo_id_anexo | PATCH /anexo/{id} | Renomeia um anexo pelo id |
deletar_pelo_id_anexo | DELETE /anexo/{id} | Exclui um anexo pelo id |
criar_anexo
POST/anexo Exige credencial
Anexa um arquivo ou link
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.
function criar_anexo(
credencial_de_acesso: CredencialDeAcesso,
corpo_da_requisicao: tipos.AnexoCriar,
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.Anexo>import { CredencialDeAcesso } from "termo_core";
import { criar_anexo } from "termo_core/support";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await criar_anexo(credencial_de_acesso, corpo_da_requisicao);Argumentos
Nome
Tipo
Retorno: Promise<tipos.Anexo> · Rust: Result<tipos::Anexo, ErroAoChamarServico> · veja Anexo.
buscar_pelo_filtro_anexo
GET/anexo/filtro Exige credencial
Lista os anexos de uma tarefa ou ticket
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.
function buscar_pelo_filtro_anexo(
credencial_de_acesso: CredencialDeAcesso,
parametros: ParametrosDeBuscarPeloFiltroAnexo = {},
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<Array<tipos.Anexo>>import { CredencialDeAcesso } from "termo_core";
import { buscar_pelo_filtro_anexo } from "termo_core/support";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_pelo_filtro_anexo(credencial_de_acesso, { tarefa_id: "..." });Argumentos
Nome
Tipo
Retorno: Promise<Array<tipos.Anexo>> · Rust: Result<Vec<tipos::Anexo>, ErroAoChamarServico>
buscar_pelo_id_anexo
GET/anexo/{id} Exige credencial
Baixa um anexo pelo id
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.
function buscar_pelo_id_anexo(
credencial_de_acesso: CredencialDeAcesso,
id: string,
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.AnexoComConteudo>import { CredencialDeAcesso } from "termo_core";
import { buscar_pelo_id_anexo } from "termo_core/support";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_pelo_id_anexo(credencial_de_acesso, id);Argumentos
Nome
Tipo
Retorno: Promise<tipos.AnexoComConteudo> · Rust: Result<tipos::AnexoComConteudo, ErroAoChamarServico> · veja AnexoComConteudo.
atualizar_pelo_id_anexo
PATCH/anexo/{id} Exige credencial
Renomeia um anexo pelo id
Exige a permissão editar na área projetos ou tickets. Troca o nome (obrigatório, até 200 caracteres).
function atualizar_pelo_id_anexo(
credencial_de_acesso: CredencialDeAcesso,
id: string,
corpo_da_requisicao: tipos.AnexoAtualizar,
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.Anexo>import { CredencialDeAcesso } from "termo_core";
import { atualizar_pelo_id_anexo } from "termo_core/support";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await atualizar_pelo_id_anexo(credencial_de_acesso, id, corpo_da_requisicao);Argumentos
Nome
Tipo
Retorno: Promise<tipos.Anexo> · Rust: Result<tipos::Anexo, ErroAoChamarServico> · veja Anexo.
deletar_pelo_id_anexo
DELETE/anexo/{id} Exige credencial
Exclui um anexo pelo id
Exige a permissão deletar na área projetos ou tickets. Exclusão lógica.
function deletar_pelo_id_anexo(
credencial_de_acesso: CredencialDeAcesso,
id: string,
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<void>import { CredencialDeAcesso } from "termo_core";
import { deletar_pelo_id_anexo } from "termo_core/support";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
await deletar_pelo_id_anexo(credencial_de_acesso, id);Argumentos
Nome
Tipo
Retorno: Promise<void> · Rust: Result<(), ErroAoChamarServico> · sem corpo na resposta.
Tipos
Tipos usados pelas funções desta página. O nome é o mesmo nos dois pacotes.
Anexo
Arquivo (guardado no TermoBucket) ou link anexado a uma tarefa ou ticket. A lista não traz o arquivo:
ele vem só no buscarPeloId, pela URL de download assinada.
import type { Anexo } from "termo_core/support";
export interface Anexo {
atualizado_em: string;
autor?: ColaboradorResumo | null;
criado_em: string;
id: string;
nome: string;
tamanho: number;
tarefa_id?: string | null;
ticket_id?: string | null;
tipo_mime: string;
url?: string | null;
}AnexoAtualizar
import type { AnexoAtualizar } from "termo_core/support";
export interface AnexoAtualizar {
nome: string;
}AnexoComConteudo
import type { AnexoComConteudo } from "termo_core/support";
export type AnexoComConteudo = Anexo & AnexoComConteudoParte2;AnexoComConteudoParte2
import type { AnexoComConteudoParte2 } from "termo_core/support";
export interface AnexoComConteudoParte2 {
/**
* O arquivo em base64, só enquanto ele ainda não foi levado ao TermoBucket.
*/
conteudo_base64?: string | null;
/**
* URL de download do arquivo no TermoBucket, assinada por 15 minutos (vazia quando o anexo é um link).
*/
url_download?: string | null;
}AnexoCriar
import type { AnexoCriar } from "termo_core/support";
export interface AnexoCriar {
/**
* O arquivo em base64, com ou sem o prefixo `data:...;base64,`. Mande este ou `url`.
*/
arquivo_base64?: string | null;
/**
* Com `true`, o servidor baixa a imagem de `url` (só `https`, `image/*`, até 10 MB) e guarda o
* arquivo, como se ele tivesse vindo em `arquivo_base64`; o link não fica no anexo.
*/
importar_url?: boolean | null;
nome: string;
tarefa_id?: string | null;
ticket_id?: string | null;
tipo_mime?: string | null;
/**
* Link externo (documento, print no drive). Mande este ou `arquivo_base64`.
*/
url?: string | null;
}ColaboradorResumo
Quem aparece como dono, membro, responsável, solicitante ou autor nos projetos, tarefas e tickets.
import type { ColaboradorResumo } from "termo_core/support";
export interface ColaboradorResumo {
id: string;
nome: string;
}