Pular para o conteúdo
Decoding Chat API

Visão geral do Proxy de mídia

O Proxy de mídia (Media Proxy) serve anexos do Decoding Chat, imagens/avatares/ícones, temas, áudios de sons de entrada e mídias externas assinadas. Ele também recebe uploads autorizados por meio de uma capacidade (capability), uma concessão assinada embutida na própria URL de upload.

FamíliaCaminhosReferência
Anexos/attachments/{path}Obter anexo
Mídia externa assinada/external/{signature}/{target}Obter mídia externa assinada
CSS de temas/themes/{path}.cssObter CSS de tema
Som de entrada/entrance-sounds/{user_id}/{filename}Obter som de entrada
Imagens e assets1/avatars, /icons, /branding, /banners, /splashes, /embed-splashes, /emojis, /stickersContrato de assets de imagem
Objeto estático2/{key}Obter objeto estático
Repasse de upload/v1/relay/{key}Repasse de upload
Operador e interno/_health, /_metrics, /_metadata, /_sniff, /_thumbnail, /_framesEndpoints de operador e internos

1 Avatares e banners de membros de servidores também são assets de imagem em /guilds/{guild_id}/users/{user_id}/avatars e /guilds/{guild_id}/users/{user_id}/banners

2 Servido exclusivamente pelo endpoint no modo static

Transformações define os parâmetros de consulta que selecionam representações (formatos/dimensões). Respostas e limites lista status, tamanhos limites e políticas de cache.

Rotas de leitura não possuem prefixo /v1. Obtenha endpoints.media e endpoints.static_cdn a partir da descoberta da instância.

O repasse de upload é a exceção em ambos os aspectos: é servido abaixo de /v1/relay/ e sua base vem das configurações da implantação (o cliente DEVE usar a URL completa de upload emitida pela API HTTP).

Nenhuma rota pública do Proxy de mídia lê o cabeçalho Authorization da API HTTP. Anexos são autorizados por seu caminho e pela assinatura na query string (sob a política de URLs assinadas de anexos). Mídias externas usam assinatura no caminho, e uploads usam a capacidade na URL. Apenas endpoints POST internos exigem Authorization: Bearer {secret}.

O Proxy de mídia não possui limites de requisição por minuto e não envia cabeçalhos de rate limit da API HTTP.

Cada processo do Proxy de mídia opera em um modo fixo (padrão: mp):

ModoO que atende
mpAnexos, mídia externa assinada, temas, sons de entrada e todas as rotas de assets de imagem
staticTodas as rotas de leitura como objetos brutos do bucket estático, sem transformações e sem rasterização de SVG
uploadO repasse de upload mais todas as rotas de leitura do modo mp
relayExclusivamente o repasse de upload. Rotas de leitura retornam 404

A implantação padrão auto-hospedada serve endpoints.media em modo upload.

Rotas de leitura aceitam GET e HEAD. Qualquer outro método retorna 405 Method Not Allowed. A rota de repasse de upload aceita PUT.

Apenas o cabeçalho Range afeta a representação de leitura. Sob a política de CORS (enforce), o cabeçalho Origin é avaliado. Cabeçalhos como Authorization, Cookie, Accept, If-None-Match, etc., são ignorados nas leituras públicas.

O Proxy de mídia suporta requisições parciais com a unidade bytes (ex.: bytes=0-99, bytes=500-, bytes=-1000), respondendo com 206 Partial Content ou 416 Range Not Satisfiable.

Respostas bem-sucedidas de mídia retornam:

  • Cache-Control: public, max-age=31536000 (1 ano)
  • CDN-Cache-Control: public, max-age=31536000
  • X-Content-Type-Options: nosniff
  • X-Robots-Tag: noindex, nofollow, nosnippet, noimageindex, notranslate, max-snippet:0, max-image-preview:none, max-video-preview:0
  • Accept-Ranges: bytes

Qualquer arquivo enviado com tipo MIME executável ou JavaScript (text/javascript, application/javascript, etc.) é automaticamente forçado para text/plain; charset=utf-8 para prevenir ataques XSS na origem de mídia.

Arquivos SVG enviados em anexos são rasterizados automaticamente para WebP pelo Proxy de mídia antes de serem servidos, impedindo a execução de scripts embutidos no navegador do usuário.