# Como realizar o envio de arquivo(s) para documento existente

## Visão geral

Para realizar o envio de um arquivo para um documento existente no Zeev docs utilizando o recurso de integração, é necessário a criação de um XML semi-estruturado contendo as instruções de envio do(s) arquivo(s) para o documento.

* Criação de protocolo através do XML semiestruturado, conforme modelo de envio de arquivos para documento existente:
  * **Serviço Web**: *https\://\<servidor do* Zeev doc&#x73;*>/services/silentLogin.svc*
  * **Método**: GetProtocolToUploadFile(string xml), retorno string.<br>
* Submeter protocolo obtido no passo anterior com o nome do arquivo e seu conteúdo para que o arquivo seja gravado no servidor (repita esse passo para cada arquivo que será enviado):
  * **Serviço Web**: *https\://\<servidor do* Zeev doc&#x73;*>/WebScan/Services/Upload.asmx*
  * **Método**: UploadFile(string protocol, string fileName, byte\[] fileContent), retorno boolean.

{% hint style="warning" %}
**Importante:** O FileName no metodo UploadFile só aceita letras sem acentuação, dígitos, hífen, sublinhado, ponto e espaço. Qualquer caractere fora desse conjunto acentos, cedilha, &, /, etc. não são aceitos.
{% endhint %}

{% hint style="info" %}
**Dica**: o endereço do WebService para esse método difere dos outros, pois o upload está centralizado em um único WebService.
{% endhint %}

* Após o envio de todos os arquivos, o protocolo deve ser submetido ao Zeev docs para que o(s) arquivo(s) enviado(s) seja(m) incluído(s) no documento desejado:
  * **Serviço Web**: *https\://\<servidor do* Zeev doc&#x73;*>/services/silentLogin.svc*
  * **Método**: FinishUpload(string protocol), retorno string.<br>
* &#x20;Em caso de sucesso ao adicionar todos os arquivos no documento: \<success>\</success>
* &#x20;Em caso de algum arquivo ter sido rejeitado devido às regras de Script Global: \<rejectedFiles>\<file>{Nome do arquivo}\</file>\</rejectedFiles><br>

{% hint style="warning" %}
**Importante:** por padrão, ao configurar a regra de negócio de Script Global com tais restrições e utilizar essa API, o documento é encerrado normalmente inserindo os arquivos que estão dentro da regra e deixando de fora do documento os outros arquivos enquadrados na regra. Ou seja, ele não barra o envio do arquivo para o servidor, mas barra o arquivo na hora de inserir na lista de arquivos do documento no retorno da terceira etapa de integração, depois retorna quais são os arquivos rejeitados no XML através da tag chamada "rejectedFiles".
{% endhint %}

* Caso seja necessário reenviar os arquivos, é preciso limpar os arquivos enviados anteriormente; para isso, deve-se submeter o protocolo ao Zeev docs:
  * **Serviço Web**: *https\://\<servidor do* Zeev doc&#x73;*>/services/silentLogin.svc*
  * **Método**: RemoveFilesFromFolderProtocol(string protocol), sem retorno.

### Estrutura modelo do XML para enviar arquivos para um documento existente

Confira abaixo o modelo de estrutura XML para enviar arquivos para um documento existente:

| Estrutura do XML                                                       | Requerido          | Descrição                                                                                                                                                                                                                                                                                                                                       |
| ---------------------------------------------------------------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \<eContent>                                                            | Sim                | Raiz.                                                                                                                                                                                                                                                                                                                                           |
| \<header>                                                              | Sim                | Cabeçalho de identificação pelo Zeev docs.                                                                                                                                                                                                                                                                                                      |
| \<module name="SILENTLOGINUPLOAD" />                                   | <p><br>Sim</p>     | <p>Informações do módulo de entrada.<br>Atributo(s):<br><em>name</em> (obrigatório) - nome do módulo.</p>                                                                                                                                                                                                                                       |
| <p><br>      \<application code=" " /></p>                             | <p><br>Sim</p>     | <p>Identificação da aplicação.<br>Atributo(s):<br><em>code</em> (obrigatório) - código da aplicação.</p>                                                                                                                                                                                                                                        |
| \<userToken />                                                         | Sim                | Token de identificação do usuário para SilentLogin. Disponibilizada interface para geração do token através de web service.                                                                                                                                                                                                                     |
| \<identification />                                                    | Não                | Nó de livre preenchimento, podendo ser utilizado para inclusão de identificação do sistema que gerou o XML de SilentLogin.                                                                                                                                                                                                                      |
| \<adHocUser />                                                         | Não                | Usuário que será gravado o log de acesso e ação.                                                                                                                                                                                                                                                                                                |
| \</ header>                                                            | -                  | -                                                                                                                                                                                                                                                                                                                                               |
| \<structure>                                                           | -                  | -                                                                                                                                                                                                                                                                                                                                               |
| <p><br><br>      \<document id=" " fileAmount=" " operation=" " /></p> | <p><br><br>Sim</p> | <p>Dados do documento a ter arquivos adicionados.<br>Atributo(s):<br><em>id</em> (obrigatório) - identificação do documento.<br><em>fileAmount</em> (obrigatório) - total de arquivos a ser enviado para o documento.<br><em>operation</em> (obrigatório) - operação que será realizada.<br>Ex.: ADDBEFORE, ADDAFTER, REPLACE e NEWVERSION.</p> |
| \</structure>                                                          | -                  | -                                                                                                                                                                                                                                                                                                                                               |
| \</eContent >                                                          | -                  | <p>-<br></p>                                                                                                                                                                                                                                                                                                                                    |

Efetue o download do modelo de XML:

{% file src="/files/dlRB5WpzPOmn04lUSzYV" %}

O retorno do método será de sucesso ou falha.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kb.stoque.com.br/zeevdocs/integracoes/como-integrar-outras-ferramentas-com-o-zeev-docs/como-realizar-o-envio-de-arquivo-s-para-documento-existente.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
