Arquivo

13 funções do TermoBucket para arquivo.

// npm install termo_core --save-exact
import * as bucket from "termo_core/bucket";
// ou: import { bucket } from "termo_core";
FunçãoRotaO que faz
buscar_paginador_arquivoGET /arquivoLista os arquivos de todos os aplicativos com paginação
buscar_resumo_arquivoGET /arquivo/resumoResumo do armazenamento para o dashboard
buscar_pelo_id_arquivoGET /arquivo/{id}Busca um arquivo pelo id e devolve a URL de download
baixar_conteudo_arquivoGET /arquivo/{id}/conteudoBaixa o conteúdo do arquivo
enviar_conteudo_arquivoPUT /arquivo/{id}/conteudoEnvia o conteúdo do arquivo
privado_buscar_paginador_arquivoGET /private/{app}Lista os arquivos privados do aplicativo com paginação
privado_criar_arquivoPOST /private/{app}Registra um arquivo privado e devolve a URL de envio
privado_buscar_pelo_id_arquivoGET /private/{app}/{id}Busca um arquivo privado do aplicativo e devolve a URL de download
privado_deletar_pelo_id_arquivoDELETE /private/{app}/{id}Apaga um arquivo privado do aplicativo
publico_buscar_paginador_arquivoGET /public/{app}Lista os arquivos públicos do aplicativo com paginação
publico_criar_arquivoPOST /public/{app}Registra um arquivo público e devolve a URL de envio
publico_buscar_pelo_id_arquivoGET /public/{app}/{id}Busca um arquivo público do aplicativo e devolve a URL de download
publico_deletar_pelo_id_arquivoDELETE /public/{app}/{id}Apaga um arquivo público do aplicativo

buscar_paginador_arquivo

GET/arquivo Exige credencial

Lista os arquivos de todos os aplicativos com paginação

Exige qualquer permissão da área aplicativos. Lista os arquivos não excluídos de uma visibilidade, de todos os aplicativos, do mais novo para o mais antigo. visibilidade é obrigatória (publico ou privado); aplicativo_id filtra por um aplicativo; nome procura por trecho do nome original, 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. total conta os arquivos que casam com o filtro.

function buscar_paginador_arquivo(
  credencial_de_acesso: CredencialDeAcesso,
  parametros: ParametrosDeBuscarPaginadorArquivo,
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.PaginaArquivo>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { buscar_paginador_arquivo } from "termo_core/bucket";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_paginador_arquivo(credencial_de_acesso, { visibilidade });

Argumentos

Nome

Tipo

Retorno: Promise<tipos.PaginaArquivo> · Rust: Result<tipos::PaginaArquivo, ErroAoChamarServico> · veja PaginaArquivo.

buscar_resumo_arquivo

GET/arquivo/resumo Exige credencial

Resumo do armazenamento para o dashboard

Exige qualquer permissão da área aplicativos. Devolve os totais atuais de arquivos e bytes (geral, públicos e privados), os envios por dia dos últimos 90 dias, o armazenamento no fim de cada um dos últimos 12 meses (com o que foi enviado no mês) e os 8 aplicativos que mais ocupam espaço. Os envios contam também os arquivos já excluídos, e a data de exclusão refaz o histórico de armazenamento. Dias e meses no horário de Brasília.

function buscar_resumo_arquivo(
  credencial_de_acesso: CredencialDeAcesso,
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.Resumo>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { buscar_resumo_arquivo } from "termo_core/bucket";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_resumo_arquivo(credencial_de_acesso);

Argumentos

Nome

Tipo

Retorno: Promise<tipos.Resumo> · Rust: Result<tipos::Resumo, ErroAoChamarServico> · veja Resumo.

buscar_pelo_id_arquivo

GET/arquivo/{id} Exige credencial

Busca um arquivo pelo id e devolve a URL de download

Exige qualquer permissão da área aplicativos. Busca um arquivo de qualquer aplicativo e devolve o registro e uma URL de download assinada, válida por 15 minutos (GET /arquivo/{id}/conteudo, sem token); arquivo público traz também url_publica, o endereço permanente. Arquivo excluído responde 404.

function buscar_pelo_id_arquivo(
  credencial_de_acesso: CredencialDeAcesso,
  id: string,
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.ArquivoComDownload>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { buscar_pelo_id_arquivo } from "termo_core/bucket";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_pelo_id_arquivo(credencial_de_acesso, id);

Argumentos

Nome

Tipo

Retorno: Promise<tipos.ArquivoComDownload> · Rust: Result<tipos::ArquivoComDownload, ErroAoChamarServico> · veja ArquivoComDownload.

baixar_conteudo_arquivo

GET/arquivo/{id}/conteudo Pública

Baixa o conteúdo do arquivo

Pública, sem token: o acesso vem do link. Arquivo privado só abre com expira e assinatura da url_download (15 minutos); arquivo público abre também sem eles, pela url_publica. Devolve o conteúdo com o Content-Type gravado; imagem, vídeo, áudio e PDF abrem no navegador e os demais tipos são baixados como anexo.

function baixar_conteudo_arquivo(
  id: string,
  parametros: ParametrosDeBaixarConteudoArquivo = {},
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<Uint8Array>
Exemplo
import { baixar_conteudo_arquivo } from "termo_core/bucket";

const resposta = await baixar_conteudo_arquivo(id, { expira: 1 });

Argumentos

Nome

Tipo

Retorno: Promise<Uint8Array> · Rust: Result<Vec<u8>, ErroAoChamarServico> · os bytes do arquivo.

enviar_conteudo_arquivo

PUT/arquivo/{id}/conteudo Pública

Envia o conteúdo do arquivo

Pública, sem token: o acesso vem do link. É a url_envio devolvida ao criar o arquivo (expira e assinatura obrigatórios, 15 minutos). O corpo é o conteúdo cru, com o Content-Type e o Content-Length informados ao criar; o TermoBucket grava no R2 pelo binding do Worker. Enviar de novo pelo mesmo link substitui o conteúdo. O tamanho fica limitado também pelo corpo máximo de requisição do plano do Cloudflare Workers (100 MB no Free e no Pro).

function enviar_conteudo_arquivo(
  id: string,
  parametros: ParametrosDeEnviarConteudoArquivo,
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<void>
Exemplo
import { enviar_conteudo_arquivo } from "termo_core/bucket";

await enviar_conteudo_arquivo(id, { expira, assinatura });

Argumentos

Nome

Tipo

Retorno: Promise<void> · Rust: Result<(), ErroAoChamarServico> · sem corpo na resposta.

privado_buscar_paginador_arquivo

GET/private/{app} Exige credencial

Lista os arquivos privados do aplicativo com paginação

API de arquivos dos apps, com o token de aplicativo do TermoAuth. Lista só os arquivos privados não excluídos do aplicativo do token, do mais novo para o mais antigo. pagina começa em 1 (padrão 1) e tamanho tem padrão 10, sem máximo; valores menores que 1 viram 1.

function privado_buscar_paginador_arquivo(
  credencial_de_acesso: CredencialDeAcesso,
  app: string,
  parametros: ParametrosDePrivadoBuscarPaginadorArquivo = {},
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.PaginaArquivo>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { privado_buscar_paginador_arquivo } from "termo_core/bucket";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await privado_buscar_paginador_arquivo(credencial_de_acesso, app, { pagina: 1 });

Argumentos

Nome

Tipo

Retorno: Promise<tipos.PaginaArquivo> · Rust: Result<tipos::PaginaArquivo, ErroAoChamarServico> · veja PaginaArquivo.

privado_criar_arquivo

POST/private/{app} Exige credencial

Registra um arquivo privado e devolve a URL de envio

API de arquivos dos apps, com o token de aplicativo do TermoAuth (o painel não usa). Registra o arquivo privado do aplicativo do token e devolve uma URL de envio assinada, válida por 15 minutos (PUT /arquivo/{id}/conteudo, sem token), para o app enviar o conteúdo com PUT e os cabecalhos indicados. nome_original é obrigatório (até 255 caracteres); tipo é o tipo MIME exato (tipo/subtipo, gravado em minúsculas) e precisa estar entre os tipos permitidos do aplicativo; tamanho é o tamanho em bytes, maior que zero e até o tamanho_maximo do aplicativo. O envio só é aceito com o Content-Type e o Content-Length informados aqui, e o TermoBucket grava no R2 pelo binding do Worker. No primeiro pedido, o aplicativo é cadastrado sozinho com os limites padrão (50 MiB, image/* e application/pdf).

function privado_criar_arquivo(
  credencial_de_acesso: CredencialDeAcesso,
  app: string,
  corpo_da_requisicao: tipos.ArquivoCriar,
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.ArquivoCriado>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { privado_criar_arquivo } from "termo_core/bucket";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await privado_criar_arquivo(credencial_de_acesso, app, corpo_da_requisicao);

Argumentos

Nome

Tipo

Retorno: Promise<tipos.ArquivoCriado> · Rust: Result<tipos::ArquivoCriado, ErroAoChamarServico> · veja ArquivoCriado.

privado_buscar_pelo_id_arquivo

GET/private/{app}/{id} Exige credencial

Busca um arquivo privado do aplicativo e devolve a URL de download

API de arquivos dos apps, com o token de aplicativo do TermoAuth. Devolve o registro do arquivo e uma URL de download assinada, válida por 15 minutos. Só encontra arquivo privado do próprio aplicativo do token: arquivo de outro app ou de outra visibilidade responde 404. Arquivo privado só é lido pela URL assinada (url_publica é sempre null).

function privado_buscar_pelo_id_arquivo(
  credencial_de_acesso: CredencialDeAcesso,
  app: string,
  id: string,
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.ArquivoComDownload>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { privado_buscar_pelo_id_arquivo } from "termo_core/bucket";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await privado_buscar_pelo_id_arquivo(credencial_de_acesso, app, id);

Argumentos

Nome

Tipo

Retorno: Promise<tipos.ArquivoComDownload> · Rust: Result<tipos::ArquivoComDownload, ErroAoChamarServico> · veja ArquivoComDownload.

privado_deletar_pelo_id_arquivo

DELETE/private/{app}/{id} Exige credencial

Apaga um arquivo privado do aplicativo

API de arquivos dos apps, com o token de aplicativo do TermoAuth. Apaga o objeto no R2 e marca o registro como excluído. Só alcança arquivo privado do próprio aplicativo do token. Se o R2 falhar, o registro continua e a chamada pode ser repetida.

function privado_deletar_pelo_id_arquivo(
  credencial_de_acesso: CredencialDeAcesso,
  app: string,
  id: string,
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<void>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { privado_deletar_pelo_id_arquivo } from "termo_core/bucket";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
await privado_deletar_pelo_id_arquivo(credencial_de_acesso, app, id);

Argumentos

Nome

Tipo

Retorno: Promise<void> · Rust: Result<(), ErroAoChamarServico> · sem corpo na resposta.

publico_buscar_paginador_arquivo

GET/public/{app} Exige credencial

Lista os arquivos públicos do aplicativo com paginação

API de arquivos dos apps, com o token de aplicativo do TermoAuth. Lista só os arquivos públicos não excluídos do aplicativo do token, do mais novo para o mais antigo. pagina começa em 1 (padrão 1) e tamanho tem padrão 10, sem máximo; valores menores que 1 viram 1.

function publico_buscar_paginador_arquivo(
  credencial_de_acesso: CredencialDeAcesso,
  app: string,
  parametros: ParametrosDePublicoBuscarPaginadorArquivo = {},
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.PaginaArquivo>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { publico_buscar_paginador_arquivo } from "termo_core/bucket";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await publico_buscar_paginador_arquivo(credencial_de_acesso, app, { pagina: 1 });

Argumentos

Nome

Tipo

Retorno: Promise<tipos.PaginaArquivo> · Rust: Result<tipos::PaginaArquivo, ErroAoChamarServico> · veja PaginaArquivo.

publico_criar_arquivo

POST/public/{app} Exige credencial

Registra um arquivo público e devolve a URL de envio

API de arquivos dos apps, com o token de aplicativo do TermoAuth (o painel não usa). Registra o arquivo público do aplicativo do token e devolve uma URL de envio assinada, válida por 15 minutos (PUT /arquivo/{id}/conteudo, sem token), para o app enviar o conteúdo com PUT e os cabecalhos indicados. nome_original é obrigatório (até 255 caracteres); tipo é o tipo MIME exato (tipo/subtipo, gravado em minúsculas) e precisa estar entre os tipos permitidos do aplicativo; tamanho é o tamanho em bytes, maior que zero e até o tamanho_maximo do aplicativo. O envio só é aceito com o Content-Type e o Content-Length informados aqui, e o TermoBucket grava no R2 pelo binding do Worker. No primeiro pedido, o aplicativo é cadastrado sozinho com os limites padrão (50 MiB, image/* e application/pdf).

function publico_criar_arquivo(
  credencial_de_acesso: CredencialDeAcesso,
  app: string,
  corpo_da_requisicao: tipos.ArquivoCriar,
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.ArquivoCriado>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { publico_criar_arquivo } from "termo_core/bucket";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await publico_criar_arquivo(credencial_de_acesso, app, corpo_da_requisicao);

Argumentos

Nome

Tipo

Retorno: Promise<tipos.ArquivoCriado> · Rust: Result<tipos::ArquivoCriado, ErroAoChamarServico> · veja ArquivoCriado.

publico_buscar_pelo_id_arquivo

GET/public/{app}/{id} Exige credencial

Busca um arquivo público do aplicativo e devolve a URL de download

API de arquivos dos apps, com o token de aplicativo do TermoAuth. Devolve o registro do arquivo e uma URL de download assinada, válida por 15 minutos. Só encontra arquivo público do próprio aplicativo do token: arquivo de outro app ou de outra visibilidade responde 404. Como o arquivo é público, a resposta também traz url_publica, o endereço permanente que abre sem assinatura (pelo domínio público do bucket, quando R2_URL_PUBLICA está configurado, ou por GET /arquivo/{id}/conteudo).

function publico_buscar_pelo_id_arquivo(
  credencial_de_acesso: CredencialDeAcesso,
  app: string,
  id: string,
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.ArquivoComDownload>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { publico_buscar_pelo_id_arquivo } from "termo_core/bucket";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await publico_buscar_pelo_id_arquivo(credencial_de_acesso, app, id);

Argumentos

Nome

Tipo

Retorno: Promise<tipos.ArquivoComDownload> · Rust: Result<tipos::ArquivoComDownload, ErroAoChamarServico> · veja ArquivoComDownload.

publico_deletar_pelo_id_arquivo

DELETE/public/{app}/{id} Exige credencial

Apaga um arquivo público do aplicativo

API de arquivos dos apps, com o token de aplicativo do TermoAuth. Apaga o objeto no R2 e marca o registro como excluído. Só alcança arquivo público do próprio aplicativo do token. Se o R2 falhar, o registro continua e a chamada pode ser repetida.

function publico_deletar_pelo_id_arquivo(
  credencial_de_acesso: CredencialDeAcesso,
  app: string,
  id: string,
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<void>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { publico_deletar_pelo_id_arquivo } from "termo_core/bucket";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
await publico_deletar_pelo_id_arquivo(credencial_de_acesso, app, 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.

ArmazenamentoDoMes

import type { ArmazenamentoDoMes } from "termo_core/bucket";

export interface ArmazenamentoDoMes {
  arquivos: number;
  arquivos_enviados: number;
  bytes: number;
  bytes_enviados: number;
  mes: string;
}

Arquivo

import type { Arquivo } from "termo_core/bucket";

export interface Arquivo {
  app: string;
  atualizado_em: string;
  bucket: string;
  chave: string;
  criado_em: string;
  id: string;
  nome_original: string;
  tamanho: number;
  tipo: string;
  visibilidade: string;
}

ArquivoComDownload

import type { ArquivoComDownload } from "termo_core/bucket";

export interface ArquivoComDownload {
  arquivo: Arquivo;
  expira_em: string;
  url_download: string;
  url_publica?: string | null;
}

ArquivoCriado

import type { ArquivoCriado } from "termo_core/bucket";

export interface ArquivoCriado {
  arquivo: Arquivo;
  cabecalhos: Record<string, string>;
  expira_em: string;
  metodo: string;
  url_envio: string;
}

ArquivoCriar

import type { ArquivoCriar } from "termo_core/bucket";

export interface ArquivoCriar {
  nome_original: string;
  tamanho: number;
  tipo: string;
}

ConsumoDoAplicativo

import type { ConsumoDoAplicativo } from "termo_core/bucket";

export interface ConsumoDoAplicativo {
  arquivos: number;
  bytes: number;
  id: string;
  nome: string;
  slug: string;
}

EnviosDoDia

import type { EnviosDoDia } from "termo_core/bucket";

export interface EnviosDoDia {
  arquivos: number;
  bytes: number;
  dia: string;
}

PaginaArquivo

import type { PaginaArquivo } from "termo_core/bucket";

export interface PaginaArquivo {
  itens: Array<PaginaArquivoItensItem>;
  pagina: number;
  tamanho: number;
  total: number;
}

PaginaArquivoItensItem

import type { PaginaArquivoItensItem } from "termo_core/bucket";

export interface PaginaArquivoItensItem {
  app: string;
  atualizado_em: string;
  bucket: string;
  chave: string;
  criado_em: string;
  id: string;
  nome_original: string;
  tamanho: number;
  tipo: string;
  visibilidade: string;
}

Resumo

import type { Resumo } from "termo_core/bucket";

export interface Resumo {
  armazenamento_por_mes: Array<ArmazenamentoDoMes>;
  arquivos: number;
  arquivos_privados: number;
  arquivos_publicos: number;
  bytes: number;
  bytes_privados: number;
  bytes_publicos: number;
  consumo_por_aplicativo: Array<ConsumoDoAplicativo>;
  envios_por_dia: Array<EnviosDoDia>;
}

Nesta página