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ção | Rota | O que faz |
|---|---|---|
buscar_paginador_arquivo | GET /arquivo | Lista os arquivos de todos os aplicativos com paginação |
buscar_resumo_arquivo | GET /arquivo/resumo | Resumo do armazenamento para o dashboard |
buscar_pelo_id_arquivo | GET /arquivo/{id} | Busca um arquivo pelo id e devolve a URL de download |
baixar_conteudo_arquivo | GET /arquivo/{id}/conteudo | Baixa o conteúdo do arquivo |
enviar_conteudo_arquivo | PUT /arquivo/{id}/conteudo | Envia o conteúdo do arquivo |
privado_buscar_paginador_arquivo | GET /private/{app} | Lista os arquivos privados do aplicativo com paginação |
privado_criar_arquivo | POST /private/{app} | Registra um arquivo privado e devolve a URL de envio |
privado_buscar_pelo_id_arquivo | GET /private/{app}/{id} | Busca um arquivo privado do aplicativo e devolve a URL de download |
privado_deletar_pelo_id_arquivo | DELETE /private/{app}/{id} | Apaga um arquivo privado do aplicativo |
publico_buscar_paginador_arquivo | GET /public/{app} | Lista os arquivos públicos do aplicativo com paginação |
publico_criar_arquivo | POST /public/{app} | Registra um arquivo público e devolve a URL de envio |
publico_buscar_pelo_id_arquivo | GET /public/{app}/{id} | Busca um arquivo público do aplicativo e devolve a URL de download |
publico_deletar_pelo_id_arquivo | DELETE /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>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>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>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>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>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>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>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>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>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>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>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>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>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>;
}