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çãoRotaO que faz
criar_anexoPOST /anexoAnexa um arquivo ou link
buscar_pelo_filtro_anexoGET /anexo/filtroLista os anexos de uma tarefa ou ticket
buscar_pelo_id_anexoGET /anexo/{id}Baixa um anexo pelo id
atualizar_pelo_id_anexoPATCH /anexo/{id}Renomeia um anexo pelo id
deletar_pelo_id_anexoDELETE /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>
Exemplo
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>>
Exemplo
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>
Exemplo
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>
Exemplo
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>
Exemplo
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;
}

Nesta página