# Gerar documentos

{% hint style="info" %}
Aqui estão reunidas informações técnicas sobre o consumo da API disponível para criação de documentos.

Para obter informações sobre como configurar integrações e templates consulte [O que é a geração automática de documentos](/zeev/geracao-automatica-de-documentos/o-que-e-a-geracao-automatica-de-documentos.md), [Como configurar um template](/zeev/geracao-automatica-de-documentos/como-configurar-um-template.md) e [Como configurar uma integração para gerar documentos](/zeev/geracao-automatica-de-documentos/como-configurar-uma-fonte-de-dados-para-gerar-documentos.md).
{% endhint %}

## Como gerar documentos no Zeev utilizando API?

Para gerar documentos utilizando API siga os passos abaixo:

1. **Obtenha o InstanceId:** Obtenha o código identificador da instância de solicitação. Para uma execução manual ou externa é possível encontra-lo na página Monitorar > Solicitações, ou através de consultas de API como explicado em [Listar todas as solicitações do sistema](/zeev/apis/all/instances/report.md). \
   Se o endpoint for utilizado dentro de uma integração do Zeev, considere usar **{Instance.Id}** conforme explicado em [Tokens de instâncias de solicitações](/zeev/outras-configuracoes-avancadas/dicionario-de-tokens-de-variaveis/tokens-de-instancias-de-solicitacoes.md);
2. **Obtenha o xmlProcess:** É um texto estruturado contendo as informações dos campos que vão preencher o template. Se utilizado a partir de uma Integração do Zeev, considere utilizar **{Instance.Xml}** para enviar os dados do formulário de uma instancia durante a execução. Tamém é possível utilizar o padrão especificado em [#exemplo-de-xml-de-processo](#exemplo-de-xml-de-processo "mention")
3. **Obtenha o templatePath:** Informe aqui o caminho relativo do template criado. Veja com obter em[Como configurar um template](/zeev/geracao-automatica-de-documentos/como-configurar-um-template.md);
4. **Defina o generatedFilename:** Defina o nome do arquivo gerado;
5. **Defina o tipo de documento gerado:** Utilize 0 para que o resultado do arquivo gerado seja um PDF ou 1 para que seja um DOCX;
6. **Envie a requisição:** Com todos os dados elabore o corpo da requisição e envie a requisição para [#api-2-files-createfile](#api-2-files-createfile "mention")

### Exemplo de XML de processo

<pre class="language-xml"><code class="lang-xml"><strong>&#x3C;workflow>&#x3C;execute>&#x3C;form>&#x3C;formField name=\"campoA\" order=\"1\" codFieldGroup=\"\" fieldGroupName=\"\">Valor do Campo A&#x3C;/formField>&#x3C;/form>&#x3C;/execute>&#x3C;/workflow>
</strong></code></pre>

### Exemplo simples do corpo de requisição para gerar arquivo

```json
{
  "instanceId": 1251,
  "xmlProcess": "<workflow><execute><form><formField name=\"nomePessoal\" order=\"1\" codFieldGroup=\"\" fieldGroupName=\"\">Lucas da Silva</formField></form></execute></workflow>",
  "templatePath": "/attachments/template/example.docx",
  "generatedFilename": "CreateFile Example",
  "outputFileFormat": 0
}
```

### Exemplo de requisição utilizando tokens de variável do Zeev

```json
{
  "instanceId": {Instance.Id},
  "xmlProcess": "{Instance.Xml}", // {Instance.Xml} mantém o comportamento atual (sem preservação de \n)
  "xmlProcess": "{Instance.Xml.KeepLineBreaks}", //{Instance.Xml.KeepLineBreaks} gera quebra de linhas a partir do enter inserido.
  "templatePath": "/attachments/template/example.docx",
  "generatedFilename": "CreateFile Example",
  "outputFileFormat": 0
}
```

{% hint style="info" %}
Observar a diferença de uso de **{Instance.Xml}** e **{Instance.Xml.KeepLineBreaks}**.

O token chamado **KeepLineBreaks** é responsável por fazer a quebra de linha durante a geração de um arquivo a partir do "Enter". Anteriormente, as quebras de linha durante geração de documento eram realizadas com o \n.
{% endhint %}

{% openapi src="/files/DYIxvabeLXa2mL6uE2si" path="/api/2/files/createfile" method="post" %}
[ZeevApi's\_new.json](https://3371003943-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MD66pBdRalAQgnhNstG%2Fuploads%2Ff5huLIsAqm88oSjkTavv%2FZeevApi's_new.json?alt=media\&token=aae47f9f-90ca-48d0-b250-fc38fe74e6c0)
{% endopenapi %}

### Exemplo de requisição para criação de documentos

{% tabs %}
{% tab title="Node.js" %}

```javascript
const myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Accept", "application/json");
myHeaders.append("Authorization", "Bearer TOKEN_DO_USUARIO");

const raw = JSON.stringify({
  "instanceId": 1251,
  "xmlProcess": "<workflow><execute><form><formField name=\"nomePessoal\" order=\"1\" codFieldGroup=\"\" fieldGroupName=\"\">Lucas da Silva</formField></form></execute></workflow>",
  "templatePath": "/attachments/template/example.docx",
  "generatedFilename": "CreateFile Example",
  "outputFileFormat": 0
});

const requestOptions = {
  method: "POST",
  headers: myHeaders,
  body: raw
};

try {
  const response = await fetch("https://seu_endereco.do.zeev/api/2/files/createfile", requestOptions);
  const result = await response.text();
  console.log(result)
} catch (error) {
  console.error(error);
};
```

{% endtab %}
{% endtabs %}

***

## **Links relacionados**:

* [O que é preciso para fazer integrações do Zeev para outros sistemas?](/zeev/integracoes/o-que-e-preciso-para-fazer-integracoes.md)
* [Como autenticar nas APIs do Zeev](/zeev/apis/como-utilizar-as-apis-do-zeev/como-gerar-tokens-para-autenticar-nas-apis.md)
* [Como controlar o volume máximo de requisições à APIs](/zeev/apis/como-utilizar-as-apis-do-zeev/como-controlar-o-volume-maximo-de-requisicoes-a-apis.md)
* [Como acessar o Swagger / OpenAPI](/zeev/apis/como-utilizar-as-apis-do-zeev/como-acessar-o-swagger-openapi.md)
* [O que é a geração automática de documentos](/zeev/geracao-automatica-de-documentos/o-que-e-a-geracao-automatica-de-documentos.md)
* [Como configurar uma integração para gerar documentos](/zeev/geracao-automatica-de-documentos/como-configurar-uma-fonte-de-dados-para-gerar-documentos.md)
* [Como configurar um template](/zeev/geracao-automatica-de-documentos/como-configurar-um-template.md)


---

# 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/zeev/apis/all/others/generate-docs.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.
