> For the complete documentation index, see [llms.txt](https://docs.vaultid.com.br/workspace/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.vaultid.com.br/workspace/cess/api/integracao-ftp-file-transfer-protocol.md).

# Integração FTP (File Transfer Protocol)

## Configuração FTP <a href="#configuracao-google-cloud-platform-storage-gcp" id="configuracao-google-cloud-platform-storage-gcp"></a>

Para utilizar as funcionalidades de integração com FTP é necessário configurar uma variável de ambiente chamada "**ftpCredentials**". Essa variável deverá conter o seguinte json *encodado* em *base64.*

Por exemplo, se tivermos o seguinte json: {"server":"\<url servidor ftp>","username":"\<usuario ftp>","password":"\<senha ftp>"}

Deveremos configurar a variável de ambiente como: 'ftpCredentials=eyJzZXJ2ZXIiOiI8dXJsIHNlcnZpZG9yIGZ0cD4iLCJ1c2VybmFtZSI6Ijx1c3VhcmlvIGZ0cD4iLCJwYXNzd29yZCI6IjxzZW5oYSBmdHA+In0='

## CESS lendo do FTP <a href="#cess-lendo-do-bucket" id="cess-lendo-do-bucket"></a>

Para o CESS ler o arquivo original do FTP é necessário, além das configuração anterior, especificar duas chaves na criação da transação: "documents\_source" : "**FTP\_STORAGE**" e no documents\[] {**"data": "nome\_do\_objeto\_no\_repositorio\_ftp".**

Por exemplo, se deseja que seja assinado o arquivo chamado "meu\_arquivo.txt", então poderá utilizar o seguinte json como chamada:

```
{
	"certificate_alias": "",
	"type": "CAdEs-detached",
	"hash_algorithm": "SHA256",
	"documents_source": "FTP_STORAGE", //OBRIGATÓRIO
	"policy": "AD_RB",
	"checksum_algorithm": "SHA256",
	"mode": "sync",
	"documents": [
		{
			"id": "0",
			"data": "meu_arquivo.txt", //OBRIGATÓRIO
		}
	]
}
```

## CESS escrevendo no FTP <a href="#cess-escrevendo-no-bucket" id="cess-escrevendo-no-bucket"></a>

Para o CESS escrever o arquivo assinado no FTP é necessário, além das configuração anterior, especificar duas chaves na criação da transação: "documents\_destination" : "**FTP\_STORAGE**" e no documents\[] {**"destination\_file\_name": "nome\_do\_objeto\_no\_repositorio\_ftp"** (opcional).

Por exemplo, se deseja que o arquivo assinado seja armazenado com o nome "minha\_assinatura.p7s", então poderá utilizar o seguinte json como chamada:

```
{
	"certificate_alias": "",
	"type": "CAdEs-detached",
	"hash_algorithm": "SHA256",
	"documents_source": "DATA_URL",
	"documents_destination": "FTP_STORAGE", //OBRIGATÓRIO
	"policy": "AD_RB",
	"checksum_algorithm": "SHA256",
	"mode": "sync",
	"documents": [
		{
			"id": "0",
			"data": "data:text/plain;base64,Y2xldWJlcl90ZXN0ZQ==",
			"destination_file_name": "minha_assinatura.p7s" //OPCIONAL
		}
	]
}
```

**Observação**:

* Caso não seja definido um valor para variável "destination\_file\_name", será gerado um aleatório com a seguinte lei de formação: <*ano>***/**<*mês>***/**<*dia>***/**<*timestamp>***\_**<*numeroAleatório8Dígitos>.* Por exemplo: 2020/07/10/1594398391\_dc80d9b0.
* Quando cliente optar pelo documents\_*source* FTP\_STORAGE, deverá passar, caso queira especificar um nome para o objeto, o "destination\_file\_name" no mesmo nível do "id" e "data". Quando optar pelo UPLOAD\_REFERENCE, ele tem a opção de criar a chave "documents\[]" e passar o "id" e o "destination\_file\_name" no mesmo nível; pois quando realizar o upload via rota /file-transferer/\<tcn> ocorrerá o match entre o document\[id] e o id definido na chave "documents\[]' na criação da transação
