Essa API tem o objetivo de gerenciar os arquivos no sistema, permitindo a adição, modificação, visualização, criação de pastas, mudança de pastas e deleção.
Recursos | Serviços | Endpoints |
---|---|---|
Enviar Arquivos | Fazer upload de arquivo | /files/{project_id} |
Acessar Arquivos em Root | Acesso de arquivos | /files/{project_id} |
Criar pasta | Criação de arquivos | /files/folder/{project_id} |
Deletar Arquivo | Deleção de um único arquivo | /files/{project_id}/file/{file_id} |
Deletar Arquivos | Deleção de todos arquivos do projeto | /files/{project_id} |
Deletar repositório | Deleção do repositório inteiro | /files/{project_id}/destroy |
Mudar de pasta | Criação de arquivos | /files/{project_id}/change-folder |
Acessar Arquivo na Pasta | Acesso de arquivos na pasta | /files/{project_id}/{file_id} |
Deletar Pasta | Deleção de pasta | /files/{project_id}/folder/{folder_id} |
Acessar Item por Nome | Acessar um item buscando pelo nome | /files/{project_id}/key |
Para os usuários, as URLs base é:
api.tagcenter.io
A função uploadPrivateFile() recebe como parâmetro UserEntity, id do projeto, os arquivo e FileUploadDTO.
Busca a pasta delegando para a função publicFilesRepository.findOne(). Caso encontre adiciona o arquivo na pasta, caso não cria uma pasta com a função createFolder() e adiciona o arquivo nela. Caso o tipo do arquivo seja uma pasta, retorna erro 126.
Rota utilizada:
Post /files/{project_id}
Exemplo:
Post /files/141
Retorno do exemplo:
[
{
"url":"https://cdn.tagchat.online/projects/141/147/pexels-canva-studio-31532011651771868809.jpg",
"key":"pexels-canva-studio-31532011651771868809.jpg",
"type":"file",
"mimetype":"image/jpeg",
"path":"/147/",
"fileSize":1310784,
"project":{
"id":"141",
"name":"enriquecimento-leads",
"title":"Projeto de Enrichment Atualizado2",
"description":"Description",
"active":true,
"timezone":"America/Sao_Paulo",
"enrichment_enable":true,
"is_deleted":false,
"auto_social_point":true,
"avatar":null,
"owner":{
"id":"157",
"email":"naiane@tagchat.com.br",
"phoneNumber":"5517991869702",
"name":"SISTEMA TAGCENTER",
"active":false,
"isRegisteredWithGoogle":false,
"isTwoFactorAuthenticationEnabled":false,
"isEmailConfirmed":false,
"isPhoneNumberConfirmed":false,
"stripe_customer_id":null,
"user_language":"pt-BR",
"integration_id":null,
"address":null,
"avatar":null
}
},
"owner":{
"id":"155",
"email":"teste@tagchat.com.br",
"phoneNumber":"5517991869702",
"name":"SISTEMA TAGCENTER",
"active":false,
"isRegisteredWithGoogle":false,
"isTwoFactorAuthenticationEnabled":false,
"isEmailConfirmed":false,
"isPhoneNumberConfirmed":false,
"stripe_customer_id":null,
"user_language":"pt-BR",
"integration_id":null,
"address":null,
"avatar":null
},
"parent":{
"id":"147",
"url":null,
"key":"teste",
"type":"folder",
"mimetype":"directory/folder",
"path":"/",
"fileSize":"0"
},
"id":"816"
}
]
Chave | Tipo | Descrição |
---|---|---|
url | string | Url do arquivo |
key | string | Chave do arquivo |
type | string | Tipo do arquivo |
mimetype | string | MIME-Type do arquivo |
path | string | Caminho do arquivo |
fileSize | string | Tamanho do arquivo |
id | string | Id do arquivo |
A função getRootFiles() recebe como parâmetro o id do projeto. Delega para a função projectEntity.findOne() a busca do projeto pelo id no repositório. Retorna o arquivo encontrado. Caso não encontre retorna erro 125.
Rota utilizada:
Get /files/{project_id}
A função createFolder() recebe como parâmetros UserEntity, o id do projeto, o nome do arquivo e parentId.
Rota utilizada:
Post /files/folder/{project_id}
Body:
{
parent_id: int,
folder_name: string
}
Exemplo:
{
"parent_id": 238,
"folder_name": "teste-api"
}
Retorno do exemplo:
{
"url":null,
"key":"teste-api",
"type":"folder",
"mimetype":"directory/folder",
"path":"/",
"fileSize":0,
"project":{
"id":"141",
"name":"enriquecimento-leads",
"title":"Projeto de Enrichment Atualizado2",
"description":"Description",
"active":true,
"timezone":"America/Sao_Paulo",
"enrichment_enable":true,
"is_deleted":false,
"auto_social_point":true,
"avatar":null,
"owner":{
"id":"157",
"email":"naiane@tagchat.com.br",
"phoneNumber":"5517991869702",
"name":"SISTEMA TAGCENTER",
"active":false,
"isRegisteredWithGoogle":false,
"isTwoFactorAuthenticationEnabled":false,
"isEmailConfirmed":false,
"isPhoneNumberConfirmed":false,
"stripe_customer_id":null,
"user_language":"pt-BR",
"integration_id":null,
"address":null,
"avatar":null
}
},
"owner":{
"id":"155",
"email":"teste@tagchat.com.br",
"phoneNumber":"5517991869702",
"name":"SISTEMA TAGCENTER",
"active":false,
"isRegisteredWithGoogle":false,
"isTwoFactorAuthenticationEnabled":false,
"isEmailConfirmed":false,
"isPhoneNumberConfirmed":false,
"stripe_customer_id":null,
"user_language":"pt-BR",
"integration_id":null,
"address":null,
"avatar":null
},
"parent":null,
"id":"817"
}
A função deleteFile() recebe como parâmetro o id do arquivo e o id do projeto. Busca o arquivo no
repositório com a função .publicFilesRepository.findOne(). Caso não encontra, retorna erro 127. Se encontra, chama a função deletePrivateFile() e deleta o arquivo do repositório.
Rota utilizada:
Del /files/{project_id}/file/{file_id}
A função deleteFiles() recebe como parâmetro os ids dos arquivos e o id do projeto. Mapea os arquivos no repositório com a função filesId.map() e publicFilesRepository.findOne(). Caso não encontre, retorna erro 127.
Caso encontre deleta os arquivos chamando a função deletePrivateFile(), para arquivos privados, e
publicFilesRepository.delete(), para arquivos públicos.
Rota utilizada:
Del /files/{project_id}
A função deleteAllFiles() recebe como parâmetro o id do projeto e busca o arquivo no repositório com a
função publicFilesRepository.find(). Caso não tenha arquivos no projeto, retorna o erro 130. Caso encontre, mapea todos os arquivo com files.map() e deleta com a função deletePrivateFile() e
publicFilesRepository.delete().
Rota utilizada:
Del /files/{project_id}/destroy
A função changeFileFromFolder() recebe como parâmetro o id do projeto, o id da pasta de origem e o id da pasta que deseja migrar. Busca o arquivo com a função publicFilesRepository.findOne(). Caso não encontre retorna erro 127. Caso encontre, busca a pasta destino com a função publicFilesRepository.findOne(), se não encontra ou se for um arquivo retorna o erro 128 e 129, respectivamente. Copia o objeto a ser transferido de pasta com a função s3.copyObject(). Caso não consiga transferir, retorna o erro 129. Atualiza o repositório com a função publicFilesRepository.update() e deleta o arquivo da pasta anterior com a função deleteObject()
Rota utilizada:
Patch /files/{project_id}/change-folder
A função getFilesFromFolder() recebe como parâmetro o id do projeto e o id da pasta. Encontra o projeto
chamando a função projectEntity.findOne(). Caso não encontre, retorna erro 125. Retorna um array contendo todos os arquivos.
Rota utilizada:
Get /files/{project_id}/{file_id}
Exemplo:
Get /files/141/820
Retorno do exemplo:
[
{
"id": "824",
"url": "https://cdn.tagchat.online/projects/141/820/pexels-tima-miroshnichenko75672311651776506954.jpg",
"key": "pexels-tima-miroshnichenko-75672311651776506954.jpg",
"type": "file",
"mimetype": "image/jpeg",
"path": "/820/",
"fileSize": "5009352",
"parent_id": 820
}
]
A função deleFolder() recebe como parâmetro o id da pasta e do projeto. Busca a pasta no repositório usando a função publicFilesRepository.findOne(). Busca os itens que serão deletados com a função findItems(). Deleta os arquivos com as funções deletePrivateFile() e publicFilesRepository.delete().
Rota utilizada:
Del /files/{project_id}/folder/{folder_id}
A função getItemByName() recebe como parâmetro o id do projeto e a o nome do projeto a ser buscado.
Delega para a função projectEntity.findOne() buscar o projeto pelo id. Se não encontra, retorna o erro 125. Se encontra, procura os arquivos no repositório com a função publicFilesRepository.findOne(). Retorna o item encontrado.
Rota utilizada:
Get /files/{project_id}/key
Body:
{
folder_name: string
}
Exemplo:
{
"folder_name": "teste-api4"
}
Retorno do exemplo:
{
"id": "820",
"url": null,
"key": "teste-api4",
"type": "folder",
"mimetype": "directory/folder",
"path": "/",
"fileSize": "0"
}
Código | Descrição |
---|---|
125 | Project with this id does not exist |
127 | File with this id does not exist |
126 | Type file should not be a parent folder or Invalid file mimetype |
128 | Parent file with this id does not exist |
129 | File with this id is not a folder or Change object to other folder failed |
130 | There are no files in the repository |
401 | Unauthorized |