Obter URL Assinada para upload de arquivo
POST/files/signature
Esse endpoint retorna uma URL Assinada (S3 POST policy) para realizar o upload de um arquivo diretamente para o bucket correspondente do S3.
Validação do arquivo. O Content-Type do objeto é fixado pela API a partir da extensão
do name (nunca vem do cliente) e o tamanho é limitado pela policy (mínimo 1 byte). A regra
depende da categoria:
tenant-public-files(imagens servidas pelo CDN públicofiles.inhire.app): allowlist estrita de imagens (jpg, jpeg, png, gif). Teto de 20 MB.- Demais categorias gravadas no bucket público (
resumes,profile-alignment-files,requisition-files,bulk-*): qualquer extensão, exceto conteúdo que o navegador executa (svg,html,js,php, qualquer tipo XML...).Content-Typederivado da extensão,application/octet-streamquando desconhecida. Teto de 20 MB, excetoresumes(máximo do S3, 5 GB). - Categorias de bucket privado (download só por URL assinada): qualquer extensão, com o
Content-Typederivado dela. Teto no máximo do S3 (5 GB), já que as telas não impõem limite.
| Categoria | Bucket | Extensões aceitas | Teto |
|---|---|---|---|
tenant-public-files | público (CDN) | jpg, jpeg, png, gif | 20 MB |
resumes | público (CDN) | qualquer, exceto conteúdo ativo | 5 GB |
profile-alignment-files, requisition-files, bulk-talent-import, bulk-user-invites | público (CDN) | qualquer, exceto conteúdo ativo | 20 MB |
offer-letter-templates, job-talent-general-files, job-talent-diversity, email-attachments | privado | qualquer | 5 GB |
Como fazer o upload. Envie um POST multipart/form-data para url com todos os
fields retornados, exatamente como recebidos (inclusive Content-Type), e o arquivo no
campo file por último. O S3 responde 403 (Policy Condition failed) se o
Content-Type ou o tamanho não bater com a policy.
Request
Responses
- 201
- 400
- 401
- 500
Created
400 Bad Request — nome, categoria ou extensão recusada para a categoria. Mensagens estáveis:
File category not supportedFile extension not supportedFile name not supported
401 Unauthorized — Authentication is required but was not provided or is invalid. The JWT token is missing, expired, or malformed.
500 Internal Server Error — An unexpected error occurred on the server. The error message is masked for security. Check service logs for details.