Arquivos e links públicos
Drive de equipe e pessoal, upload/download e links de compartilhamento.
| Método | Path | Resumo | Acesso |
|---|---|---|---|
| GET | /files/invoices/{filename} | Streams a locally-stored PDF. | Membro da equipe |
| DELETE | /me/avatar | Remove o avatar atual do caller: apaga o objeto no storage (best-effort) e limpa users.avatar_url. | Login |
| POST | /me/avatar/commit | Finaliza o upload: HEAD verify + UPDATE users.avatar_url + cleanup best-effort do avatar anterior. | Login |
| GET | /me/avatar/serve/{userID}/{filename} | Entrega o avatar público de qualquer user (rota sem auth). | Pública |
| PUT | /me/avatar/upload-binary | — caminho fallback pra providers sem presign (local/bunny). | Login |
| POST | /me/avatar/upload-init | Inicia o fluxo de upload gerando a upload URL adequada ao backend (presigned PUT em S3/R2 ou rota local-proxy /me/avatar/upload-binary). | Login |
| GET | /me/files | Listar files pessoais | Login |
| GET | /me/files/{fileID} | Metadata do file pessoal | Login |
| DELETE | /me/files/{fileID} | Soft-delete + hard-delete storage | Login |
| POST | /me/files/{fileID}/cancel-upload | Cancelar upload pending | Login |
| POST | /me/files/{fileID}/complete-upload | Finalizar upload pessoal (HEAD verify + status) | Login |
| GET | /me/files/{fileID}/content | Baixar bytes inline (personal) | Login |
| GET | /me/files/{fileID}/download-url | URL de download (presigned OU proxy path) | Login |
| GET | /me/files/{fileID}/share-links | Listar share-links pessoais | Login |
| POST | /me/files/{fileID}/share-links | Criar share-link pessoal (Fase 139) | Login |
| DELETE | /me/files/{fileID}/share-links/{shareLinkId} | Revogar share-link pessoal | Login |
| POST | /me/files/init-upload | Reservar row + emitir upload URL (personal) | Login |
| POST | /me/files/migrate | Migrar files pessoais → workspace (Fase 133b) | Membro da equipe |
| GET | /me/files/quota | Quota pessoal (quota/used/available/count) | Login |
| PUT | /me/files/upload/{fileID} | Upload proxy pessoal (Local/Bunny) | Login |
| GET | /me/folders | Listar folders pessoais | Login |
| POST | /me/folders | Criar folder pessoal | Login |
| DELETE | /me/folders/{folderID} | Soft-delete folder pessoal (recursivo) | Login |
| GET | /share/{token} | Download público legacy (sem senha) | Pública (link ou assinatura) |
| GET | /share/{token}/download | Download attachment (requer allow_download=true) | Pública (link ou assinatura) |
| GET | /share/{token}/info | Metadata V2 (has_password, allow_download, expires_at) | Pública (link ou assinatura) |
| GET | /share/{token}/metadata | Metadata legacy pro card do share page | Pública (link ou assinatura) |
| GET | /share/{token}/preview | Preview inline (Content-Disposition inline) | Pública (link ou assinatura) |
| POST | /share/{token}/verify | Trocar password por session_token (TTL 1h) | Pública (link ou assinatura) |
| GET | /teams/{teamId}/drive/files | Listagem unificada (todos contextos) | Login |
| GET | /teams/{teamId}/drive/files/{fileId}/context | Link de navegação pro entity-pai | Login |
| GET | /teams/{teamId}/drive/summary | Agregado (count+bytes) por contexto | Login |
| GET | /teams/{teamId}/files | Listar files | Login |
| DELETE | /teams/{teamId}/files/{fileId} | Soft-delete file + hard-delete storage | Login |
| PATCH | /teams/{teamId}/files/{fileId} | Renomear e/ou mover file | Login |
| GET | /teams/{teamId}/files/{fileId}/content | Baixar/streamar bytes (inline) | Login |
| DELETE | /teams/{teamId}/files/{fileId}/purge | Excluir definitivamente (purgar da lixeira) | Login |
| POST | /teams/{teamId}/files/{fileId}/replace/complete | Promover a nova versão (passo 3/3) | Login |
| POST | /teams/{teamId}/files/{fileId}/replace/init | Reservar nova versão de um arquivo existente (passo 1/3) | Login |
| PUT | /teams/{teamId}/files/{fileId}/replace/upload/{versionId} | Enviar os bytes da nova versão (passo 2/3, proxy) | Login |
| POST | /teams/{teamId}/files/{fileId}/restore | Restaurar file da lixeira | Login |
| GET | /teams/{teamId}/files/{fileId}/share-links | Listar share-links V2 do file | Login |
| POST | /teams/{teamId}/files/{fileId}/share-links | Criar share-link V2 (Fase 139) | Login |
| DELETE | /teams/{teamId}/files/{fileId}/share-links/{shareLinkId} | Revogar share-link V2 | Login |
| GET | /teams/{teamId}/files/{fileId}/thumb | Baixar thumbnail (image/jpeg) | Login |
| GET | /teams/{teamId}/files/{fileId}/versions | Histórico de versões do arquivo | Login |
| GET | /teams/{teamId}/files/{fileId}/versions/{v1}/diff/{v2} | Diff entre duas versões do arquivo | Login |
| POST | /teams/{teamId}/files/complete-upload | Finalizar upload (HEAD verify + status) | Login |
| GET | /teams/{teamId}/files/folders | Listar folders do team | Login |
| POST | /teams/{teamId}/files/folders | Criar folder | Login |
| GET | /teams/{teamId}/files/folders/{id} | Metadata do folder + breadcrumb (`path`) | Login |
| DELETE | /teams/{teamId}/files/folders/{id} | Soft-delete recursivo (folder + descendentes) | Login |
| PATCH | /teams/{teamId}/files/folders/{id} | Renomear e/ou mover folder | Login |
| POST | /teams/{teamId}/files/folders/{id}/restore | Restaurar pasta da lixeira | Login |
| POST | /teams/{teamId}/files/from-url | Importar imagem de uma URL externa (server-side) | Login |
| POST | /teams/{teamId}/files/init-upload | Reservar row + emitir upload URL | Login |
| GET | /teams/{teamId}/files/share-links | Listar share-links (legacy) do team | Login |
| POST | /teams/{teamId}/files/share-links | Criar share-link (legacy, sem password) | Login |
| DELETE | /teams/{teamId}/files/share-links/{shareLinkId} | Revogar share-link (legacy) | Login |
| GET | /teams/{teamId}/files/storage/quota | Quota da team (used/total/count/plan) | Login |
| GET | /teams/{teamId}/files/trash | Files + folders soft-deletados | Login |
| PUT | /teams/{teamId}/files/upload/{fileId} | Upload proxy (Local/Bunny) — bytes vão via API | Login |
| GET | /v1/files/invoices/{filename} | Streams a locally-stored PDF. | Membro da equipe |
| GET | /v1/public/shares/{token} | Carrega o board publicado, resolve NOMES dos membros atribuídos (se o share expõe assignees) e responde o shape mínimo. | Pública (link ou assinatura) |