Blob Service - UploadFile

UploadFile

O processo para envio de arquivos consiste em 3 passos:

1) uploadFile ou uploadFiles

Devemos usar a primitiva uploadFile para receber um link da AWS com o endereço de upload do arquivo ou a primitiva uploadfiles ser for mais que um arquivo.

Esta primitiva vai criar uma senha (areaSecret) para cada conjunto de domínio + serviço, uma espécie de estrutura de diretório único e protegido para o arquivo que será enviado. IMPORTANTE: Esta estrutura e a senha somente serão criados caso ainda não existam. Uma vez definido o areaSecret não poderá ser alterado.

Payload de entrada
{ //Uma string com o nome do domínio "domainName": "{string}", //Nome do serviço que esta enviando o arquivo "serviceName": "{string}", //Nome da pasta ou área de armazenamento "areaSecret": "{string}", //Identificador do arquivo no serviço onde é utilizado "targetObjectId": "{string}" //Nome do arquivo "fileName": "{string}" }
Request
curl --location --request POST "https://api.senior.com.br/platform/blob_service/uploadFile" --header "Content-Type: application/json" --header "client_id: {client_id}" --header "Accept: application/json" --header "Authorization: Bearer {token}" --data-raw "{ 'domainName': '{string}', 'serviceName': '{string}', 'areaSecret': '{string}', 'targetObjectId': '{string}', 'fileName': '{string}' }"
Response

200 Ok

{ "domainName": "{string}", "serviceName": "{string}", "targetObjectId": "{string}", "version": "{string}", "token": "{string}", "location": { "protocol": "S3", "uri": "{string}" }, "fileName": "{string}" }

403 Permissão negada

401 Unauthorized

{ "error_description": "The access token is invalid or has expired", "error": "invalid_token" }
2) Fazer efetivamente o upload dos dados

Para fazer o upload dos dados faça um put utilizando a uri fornecida pela resposta da primitiva uploadFile. Na resposta da primitiva uploadFile, temos informações que serão usadas no terceiro passo que é o commit. OBS: O Link devolvido na propriedade uri do primeiro passo tem um tempo de vida de 15 minutos. A partir deste tempo não será mais possível utilizar o link para fazer o envio. Será necessário repetir o primeiro passo, nestes casos.

Caso aconteça um erro semelhante:

<?xml version="1.0" encoding="UTF-8"?> <Error><Code>AccessDenied</Code></Error>

Verifique se o "targetObjectId" está nulo ou vazio (""), conforme exemplo abaixo:

{​​​​​​​​ "domainName":"andre", "serviceName":"cliente", "areaSecret":"teste", "targetObjectId":"", "fileName":"andre", "version":"andre-teste", "token":"andre", "requirements":[ "Open" ], "supportedProtocols":[ "File" ], "style":" ", "ttl":1 }​​​​​​​​

Altere o valor e realize os passos novamente, desde o POST, isso deverá corrigir o problema de AccessDenied.

3) Commit - commitFile

Todos os dados enviados estão em uma área temporária, é necessário fazer o commit para finalmente os dados serem movidos para uma área "permanente". Caso não seja feito o commit os dados serão apagados automaticamente. É neste passo que vamos receber a url para futuramente fazermos o download dos dados.

OBS: Todos os dados que serão utilizados no commit podem ser obtidos na resposta do primeiro passo, da primitiva uploadFiles.

Payload de entrada
{ //Uma string com o nome do domínio "domainName": "{string}", //Nome do serviço que esta enviando o arquivo "serviceName": "{string}", //Nome da pasta ou área de armazenamento "areaSecret": "{string}", //Identificador único do arquivo "targetObject": "{string}", //Nome do arquivo" "fileName": "{string}", //Esta propriedade foi devolvida na resposta da primitiva uploadFile "version": "{string}", //Se a cópia de trabalho deve ser liberada automaticamente após o commit. "release": boolean }
Request
curl --location --request POST "https://api.senior.com.br/platform/blob_service/commitFile" --header "Content-Type: application/json" --header "Accept: application/json" --header "Authorization: Bearer {token}" --data-raw "{ 'domainName': '{string}', 'serviceName': '{string}', 'areaSecret': '{string}', 'targetObjectId': '{string}', 'fileName': '{string}', 'version': '{string}', 'release': boolean }"