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ílias de rotas
Seção intitulada “Famílias de rotas”| Família | Caminhos | Referência |
|---|---|---|
| Anexos | /attachments/{path} | Obter anexo |
| Mídia externa assinada | /external/{signature}/{target} | Obter mídia externa assinada |
| CSS de temas | /themes/{path}.css | Obter 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, /stickers | Contrato 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, /_frames | Endpoints 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.
URLs base
Seção intitulada “URLs base”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).
Autorização
Seção intitulada “Autorização”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.
Modos de implantação
Seção intitulada “Modos de implantação”Cada processo do Proxy de mídia opera em um modo fixo (padrão: mp):
| Modo | O que atende |
|---|---|
mp | Anexos, mídia externa assinada, temas, sons de entrada e todas as rotas de assets de imagem |
static | Todas as rotas de leitura como objetos brutos do bucket estático, sem transformações e sem rasterização de SVG |
upload | O repasse de upload mais todas as rotas de leitura do modo mp |
relay | Exclusivamente o repasse de upload. Rotas de leitura retornam 404 |
A implantação padrão auto-hospedada serve endpoints.media em modo upload.
Métodos HTTP
Seção intitulada “Métodos HTTP”Rotas de leitura aceitam GET e HEAD. Qualquer outro método retorna 405 Method Not Allowed.
A rota de repasse de upload aceita PUT.
Cabeçalhos de requisição
Seção intitulada “Cabeçalhos de requisição”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.
Intervalos de bytes (Byte Ranges)
Seção intitulada “Intervalos de bytes (Byte Ranges)”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.
Cabeçalhos de representação
Seção intitulada “Cabeçalhos de representação”Respostas bem-sucedidas de mídia retornam:
Cache-Control: public, max-age=31536000(1 ano)CDN-Cache-Control: public, max-age=31536000X-Content-Type-Options: nosniffX-Robots-Tag: noindex, nofollow, nosnippet, noimageindex, notranslate, max-snippet:0, max-image-preview:none, max-video-preview:0Accept-Ranges: bytes
Detecção e segurança de conteúdo
Seção intitulada “Detecção e segurança de conteúdo”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.

