Pular para o conteúdo
Decoding Chat API

Upload de anexos

Envie anexos como partes files[n] em uma mensagem multipart, ou faça o upload antes de criar a mensagem. O pré-upload tem quatro etapas:

  1. Solicite um plano de upload.
  2. Envie os bytes para as URLs de upload do plano.
  3. Conclua o upload, se for multipart.
  4. Inclua o upload_filename ao criar ou editar a mensagem.

Solicitar URLs de upload de anexo aceita até 10 arquivos. Declare o ID, o nome, a contagem exata de bytes e o tipo de conteúdo de cada arquivo. A referência do endpoint define os campos, as permissões e os limites de tamanho.

Guarde o plano devolvido, incluindo o upload_filename. Use o content_type devolvido, que o Decoding Chat deriva do nome do arquivo e que pode, portanto, diferir do valor declarado. O upload_mode determina os próximos passos.

ValorSelecionado paraCampos adicionados
singlepart1Um file_size declarado de no máximo 10485760 bytesupload_url
multipart2Um file_size declarado acima de 10485760 bytesupload_id, part_size e parts

1 Armazenado assim que o PUT é bem-sucedido, então nunca é enviado para Concluir upload de anexo

2 Cada entrada de parts tem um part_number começando em um e sua própria upload_url, e o array vem ordenado por número de parte crescente

Use o part_size e o parts devolvidos no plano de upload. Toda parte precisa conter exatamente part_size bytes, exceto a última, que contém o restante. Não calcule um layout de partes diferente.

Envie requisições PUT para os valores de upload_url devolvidos, sem cabeçalho Authorization. As URLs podem apontar para o armazenamento ou para o repasse de upload. Não reescreva os caminhos nem as query strings.

Envie exatamente a contagem de bytes declarada. O repasse retorna 413 para corpo grande demais e 401 para capacidade ausente, inválida ou expirada. Também retorna 413 para corpo acima do próprio limite, que por padrão é 500 MiB.

Uma transferência singlepart envia o arquivo inteiro com o content_type da entrada como cabeçalho Content-Type. Uma transferência multipart envia cada parte separadamente.

CapacidadeTempo de vida
URL de upload singlepart direto5 minutos
URL de parte multipart direto1 hora
URL de repasse de qualquer tipo1O tempo de vida do token de repasse que a implantação configura, 900 segundos por padrão

1 A expiração do repasse é exclusiva, então a capacidade já é recusada no segundo da expiração

Concluir upload de anexo finaliza de 1 a 10 uploads multipart. Envie o upload_filename e o upload_id de cada plano depois que todas as partes forem bem-sucedidas. Não envie lista de partes nem entity tags.

A conclusão verifica de novo as permissões e os limites de tamanho. Veja a tabela de respostas do endpoint para os erros. Se a conclusão abortar o upload, solicite um novo plano e envie o arquivo outra vez.

Inclua o upload_filename em um anexo pré-enviado ao chamar Criar mensagem ou Modificar mensagem. Só fazer o upload não cria mensagem nem emite evento no Gateway.

Um upload fica vinculado à identidade e ao canal que o planejaram, e cada chave serve uma única vez. Uma chave que a identidade autenticada não possui, uma chave planejada para outro canal e uma chave já consumida por um anexo retornam, cada uma, 400 INVALID_FORM_BODY com UPLOADED_ATTACHMENT_NOT_FOUND em attachments.{index}.upload_filename. Quando o objeto não está no armazenamento, que é o que um plano sem transferência deixa para trás, o vínculo retorna o mesmo status com FILE_NOT_FOUND no mesmo caminho.

Uma prévia de transmissão é um JPEG anexado a uma conexão de voz. Ela usa a API de transmissões, exclusiva de usuários, e não o fluxo de anexos. Siga as regras de acesso dela para ler ou alterar uma prévia.

Use Enviar prévia de transmissão para mandar a imagem como base64 em JSON. O base64 canônico usa o alfabeto padrão, comprimento divisível por quatro e no máximo dois caracteres = no fim. Decodificar e recodificar precisa produzir a mesma string. Codificação inválida retorna 400 INVALID_STREAM_THUMBNAIL_PAYLOAD.

Como alternativa, solicite uma URL de upload e envie o JPEG com PUT. Use o content_type devolvido, envie no máximo max_bytes bytes e faça o upload antes de expires_at. A URL pode ser reutilizada até expirar.

Envie um JPEG válido de no máximo 1000000 bytes. Obter prévia de transmissão a lê, e Excluir prévia de transmissão a remove.

Uma prévia expira um dia depois do upload embutido ou da requisição que emitiu a URL de upload. Reutilizar a URL não estende o tempo de vida da prévia. Uma prévia expirada retorna 404 vazio.

Requisições de API retornam a resposta de erro padrão. Requisições de repasse retornam erros de mídia em texto puro. Erros diretos do armazenamento usam o formato do provedor de armazenamento.

Cada endpoint da API documenta o próprio limite de taxa. O repasse não tem limite de taxa por contagem de requisições.