> ## Documentation Index
> Fetch the complete documentation index at: https://br.developers.hubspot.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# API do CMS | Gerenciador de arquivos

export const ScopesList = ({scopes = [], description = "Esta API requer um dos seguintes escopos:"}) => {
  if (!scopes || scopes.length === 0) {
    return null;
  }
  const sortedScopes = scopes.sort((a, b) => a.localeCompare(b));
  return <div>
      <div className="text-sm mb-2">{description}</div>
      <div>
        {sortedScopes.map((scope, index) => <div key={index}>
            <code>
              <span className="text-xs">{scope}</span>
            </code>
          </div>)}
      </div>
    </div>;
};

<RelatedApiLink />

<Accordion title="Requisitos de escopo">
  <ScopesList
    scopes={[
  'files',
  'files.ui_hidden.read'
]}
  />
</Accordion>

Use a ferramenta de arquivos da HubSpot para gerenciar e armazenar arquivos no HubSpot. Os arquivos hospedados na HubSpot podem ser carregados e usados no HubSpot e no conteúdo externo. Eles também podem ser anexados a registros usando a [API de envolvimentos](/api-reference/overview).

Se sua empresa estiver criando um site usando o HubSpot CMS, você poderá usar a API de arquivos para fazer upload e armazenar os ativos no HubSpot. Esses arquivos poderão ser veiculados e compartilhados por meio do HubSpot CMS.

Você pode acessar a ferramenta de arquivos [no HubSpot](https://knowledge.hubspot.com/pt/files/upload-files-to-use-in-your-hubspot-content) ou por meio da API de arquivos. Veja abaixo sobre os arquivos de API e como carregar e excluir arquivos. Para obter uma lista completa de endpoints da API de arquivos, veja a [documentação de referência](/api-reference/files-files-v3/guide).

## Upload de um arquivo

O upload dos arquivos pode ser feita usando uma solicitação `POST`multipart/form-data para `files/v3/files` com os seguintes campos. Embora um ID de pasta específico não seja necessário para upload, recomendamos fazer upload dos arquivos em uma pasta e não no diretório raiz. Os requisitos da pasta para upload estão sujeitos a alterações futuras.

| Campo          | Descrição                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `file`         | O arquivo para upload (obrigatório).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `options`      | Um objeto JSON que controla a privacidade e a indexabilidade do arquivo e contém dois campos: `access`, que é obrigatório, e `ttl`, que especifica um período de tempo após o qual o arquivo será excluído automaticamente. Se você estiver usando o campo `ttl`:<ul><li>o período mínimo que deve ser definido é 1 dia.</li><li>O período máximo que pode ser definido é 1 ano.</li><li>Após o período definido, o arquivo será excluído permanentemente. Após a exclusão, o arquivo não poderá ser recuperado ou restaurado.</li></ul><br /> |
| `folderId`     | O ID da pasta para a qual o arquivo será carregado. Este campo <u>ou</u> `folderPath` deve ser fornecido na sua solicitação (mas <u>não</u> ambos).                                                                                                                                                                                                                                                                                                                                                                                            |
| `folderPath`   | O caminho da pasta para a qual o arquivo será carregado. Este campo <u>ou</u> `folderId` deve ser fornecido na sua solicitação (mas <u>não</u> ambos).                                                                                                                                                                                                                                                                                                                                                                                         |
| `fileName`     | O nome do arquivo. Se nenhum nome for especificado, um nome será gerado do conteúdo do arquivo.                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `charsetHunch` | Rótulo do conjunto de caracteres do arquivo de upload. Se não for fornecido, ele será derivada do arquivo.                                                                                                                                                                                                                                                                                                                                                                                                                                     |

Por exemplo, se você quiser enviar um arquivo com os seguintes critérios para sua conta da HubSpot:

* **Nome de arquivo:** `cat.png`
* **Pasta de destino no gerenciador de arquivos do HubSpot:** `/library/cat_archive`
* **Acessibilidade dos arquivos no HubSpot**: acesso privado

Os seguintes cabeçalhos e corpo da solicitação precisariam fazer parte da sua solicitação:

```shell theme={null}
curl --request POST \
  --url 'https://api.hubapi.com/files/v3/files?=' \
  --header 'Authorization: Bearer pat-na1-00000000-0000-0000-0000-000000000000' \
  --header 'Content-type: multipart/form-data' \
  --form file=@/Users/person/Downloads/cat.png \
  --form 'options={"access": "PRIVATE"}' \
  --form folderPath=/library/cat_archive
```

A resposta resultante incluirá o `id` e o `parentFolderId` do arquivo carregado, que você poderá usar para recuperar o arquivo por meio de uma solicitação GET.

```json theme={null}
// 201 Response from successful file upload
{
  "id": "122692044085",
  "createdAt": "2023-06-28T17:56:45.393Z",
  "updatedAt": "2023-06-28T17:56:45.393Z",
  "archived": false,
  "parentFolderId": "122692510820",
  "name": "cat",
  "path": "/library/cat_archive/cat.png",
  "size": 24574,
  "height": 219,
  "width": 225,
  "encoding": "png",
  "type": "IMG",
  "extension": "png",
  "defaultHostingUrl": "https://12345.fs1.hubspotusercontent-na1.net/hubfs/12345/library/cat_archive/cat.png",
  "url": "https://12345.fs1.hubspotusercontent-na1.net/hubfs/12345/library/cat_archive/cat.png",
  "isUsableInContent": true,
  "access": "PRIVATE"
}
```

## Verificar o estado de carregamento de um arquivo

Ao importar um arquivo de um URL para o gerenciador de arquivos enviando uma solicitação `POST` para `files/v3/files/import-from-url/async`, você poderá revisar o status de carregamento do arquivo.

Para fazer isso, envie uma solicitação `GET` para `files/v3/files/import-from-url/async/tasks/{taskId}/status`.

Depois de fazer esta solicitação, você receberá uma das seguintes respostas:

* `PENDING`: o arquivo está na fila para ser carregado. O processo de importação ainda não foi iniciado.
* `PROCESSING`: o arquivo está em processo de carregamento.
* `CANCELED`: o carregamento foi cancelado e o arquivo não será carregado. Para importar o arquivo na sua conta da HubSpot, você precisará carregar o arquivo novamente.
* `COMPLETE`: o arquivo foi carregado para a ferramenta de arquivos com sucesso. O arquivo carregado aparecerá na ferramenta de arquivos.

## Exibir detalhes do arquivo

Para revisar os detalhes de um arquivo que foi enviado por upload para a ferramenta de arquivos, envie uma solicitação `GET` para `files/v3/files/{fileId}`. Isso retornará o arquivo com detalhes, como nome, altura e largura, codificação, URL e muito mais.

Por exemplo, para recuperar os detalhes de um arquivo:

Se um arquivo for definido como privado, o URL retornado resultará em um erro 404. Para obter uma URL visível do arquivo, você pode fazer uma solicitação `GET` para `/files/v3/files/{fileId}/signed-url`. Ao fazer essa solicitação, você pode incluir parâmetros `property` para retornar propriedades específicas, como altura e largura.

## Excluir um arquivo

Para excluir um arquivo, faça uma solicitação `DELETE` para `files/v3/files/{fileId}`. Isso marcará o arquivo como excluído e tornará o conteúdo do arquivo inacessível.

Para excluir permanentemente um arquivo, faça uma solicitação `DELETE` para `files/v3/files/{fileId}/gdpr-delete`. Isso excluirá permanentemente o conteúdo e os metadados do arquivo em até 7 dias.

Se um arquivo não for excluído de acordo com o GDPR, o conteúdo dele permanecerá nos servidores do HubSpot em um estado privado onde ninguém poderá acessá-lo. Para garantir que o conteúdo do arquivo seja totalmente excluído, use a funcionalidade de exclusão do GDPR.

## Criar uma pasta

Para criar uma pasta, faça uma solicitação `POST` para `files/v3/folders`. Ao fazer a solicitação, você pode incluir os campos abaixo.

| Campo              | Obrigatório | Descrição                                                                                                                                                                           |
| ------------------ | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`             | Sim         | Nome da pasta que você deseja criar.                                                                                                                                                |
| `parentFolderId`   | Não         | Para criar a pasta dentro de uma pasta existente, inclua este campo com o ID da pasta existente. `parentFolderId` e `parentFolderPath` não podem ser definidos ao mesmo tempo.      |
| `parentFolderPath` | Não         | Para criar a pasta dentro de uma pasta existente, inclua este campo com o caminho da pasta existente. `parentFolderId` e `parentFolderPath` não podem ser definidos ao mesmo tempo. |

```json theme={null}
//Example request body of POST request to /files/v3/folders
{
  "name": "myNewFolder",
  "parentFolderId": 12345
}
```

## Alterações na V3

Se estiver usando a versão anterior desta API, a v3 tem as seguintes alterações:

* Todos os arquivos carregados através da API estarão visíveis no painel de arquivos e no seletor de arquivos. Não é possível criar arquivos ocultos. No entanto, arquivos privados e não indexáveis ainda podem ser criados.
* Os arquivos de listagem não retornam arquivos ocultos ou excluídos. No entanto, uma grande variedade de filtros pode ser aplicada. Arquivos ocultos ainda podem ser buscados por ID, mas exigem um novo escopo: `files_ui_hidden.read.`.
* Vários arquivos não podem ser carregados com uma única solicitação.
* Ações de atualização de pasta, como mover e renomear, são agora assíncronas. Cada solicitação retornará um token que pode ser usado para verificar o status da edição da pasta.
* Pontos de extremidade que criam ou substituem arquivos exigem o fornecimento de níveis de acesso para os arquivos. Esses níveis de acesso são:
  * `PUBLIC_INDEXABLE`**:** o arquivo está acessível publicamente a qualquer um que tenha o URL. Os mecanismos de pesquisa podem indexar o arquivo.
  * `PUBLIC_NOT_INDEXABLE`**:** o arquivo está acessível publicamente a qualquer um que tenha o URL. O cabeçalho X-Robots-Tag: noindex será enviado sempre que o arquivo for recuperado, instruindo aos mecanismos de pesquisa que não indexem o arquivo.
  * **`PRIVATE`**: o arquivo não está acessível publicamente. Requer um URL assinado para exibir o conteúdo. Os mecanismos de pesquisa não podem indexar o arquivo.
* Pontos de extremidade que criam arquivos possibilitam um nível de pontuações duplicadas como parte das opções de upload do arquivo.

  * `ENTIRE_PORTAL`**:** procure um arquivo duplicado na conta.
  * `EXACT_FOLDER`**:** procura um arquivo duplicado na pasta fornecida.
  * `NONE`**:** não execute qualquer validação de arquivos duplicados.
  * `REJECT`**:** rejeite o upload se um arquivo duplicado for encontrado.
  * `RETURN_EXISTING`**:** se um arquivo duplicado for encontrado, não faça o upload de um novo arquivo, retorne o encontrado.
  * A detecção de duplicados funciona em `duplicateValidationScope`, o que afeta como procuramos um objeto duplicado.
  * Isso também exige um `duplicateValidationStrategy`, que instrui o que acontece se um arquivo duplicado for encontrado.
