# Finalizar uma tarefa pendente

## Como executar uma atividade pendente no Zeev utilizando API'?

Para finalizar, ou seja executar uma tarefa pendente no Zeev utilizando API, existem duas maneiras, são elas:

* [Utilizando o código identificador de atribuição da atividade](#como-finalizar-uma-atividade-utilizando-api-e-o-codigo-de-atribuicao-da-atividade)
* [Utilizando o código identificador da instância e o código original / Integração](#como-finalizar-uma-atividade-pendente-atribuida-a-pessoa-utilizando-api-o-codigo-da-instancia-e-o-co)

## Como finalizar uma atividade utilizando API e o código de atribuição da atividade?

Para finalizar uma atividade pendente, utilizando a API do Zeev e o código de atribuição, siga os passos abaixo:

1. **Autenticação**: Primeiro obtenha um [token de autenticação](https://kb.zeev.it/apis/como-gerar-tokens-para-autenticar-nas-apis) com permissão de realizar essa operação;
2. **Obter o assingnmentid:** Utilize as API's do Zeev para obter o ID de atribuição conforme explicado nesta [página](/zeev/apis/all/assignments.md).
3. **Obter os tipos de resultado possíveis**: Verifique as opções de botão disponíveis para finalizar a tarefa, obtenha na página de configuração da atividade através da modelagem do processo ou utilizando API, veja como em [#como-obter-a-lista-de-acoes-botoes-disponiveis-para-finalizar-uma-atividade-tarefa-utilizando-api](#como-obter-a-lista-de-acoes-botoes-disponiveis-para-finalizar-uma-atividade-tarefa-utilizando-api "mention").\
   Este valor deve ser informado no atributo result do corpo da requisição.
4. **Enviar a Requisição**: Utilize o endpoint [#api-2-assignments-assignmentid](#api-2-assignments-assignmentid "mention") para enviar a requisição conforme modelo e exemplo (Troque seu\_endereco.do.zeev pelo endereço que você usa para acessar o Zeev):
5. ***Rate limit:*** Se for finalizar tarefas em lote, [respeite os limites máximos de solicitações](/zeev/apis/como-utilizar-as-apis-do-zeev/como-controlar-o-volume-maximo-de-requisicoes-a-apis.md);

{% openapi src="/files/DYIxvabeLXa2mL6uE2si" path="/api/2/assignments/{assignmentid}" method="put" %}
[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 finalizar tarefa por código de atribuição

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

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

const raw = JSON.stringify({
  "result": "concluído",
  "reason": "Informe aqui a justificativa, se aplicável",
  "formFields": [
    //Lista dos campos que deseja preencher se aplicável
    {
      "name": "nome",
      "value": "John",
      "row": 1
    },
    {
      "name": "idade",
      "value": "29",
      "row": 1
    }
  ],
  "messages": [
  //Inclusão de mensagens na tarefa
    {
      "messageBody": "Texto de mensagem incluída na instância do Zeev e vísivel para o requisitante",
      "requesterCanSee": true //esta mensagem pode ser visualizada pela pessoa que fez a solicitação
    },
    {
      "messageBody": "Texto de mensagem incluída na instância do Zeev e invísivel para o requisitante",
      "requesterCanSee": false //esta mensagem não pode ser visualizada pela pessoa que fez a requisição
    }
  ],
  "files": [
    //Lista de arquivos a serem adicionados se aplicável
    {
      "filename": "RG.JPG",
      "base64Content": "64AZNGHZTE",
      "resume": "minim anim eiusmod",
      "requesterCanSee": true,
      "docType": "Ut"
    },
    {
      "filename": "ullamco",
      "base64Content": "cupidatat",
      "resume": "proident reprehenderit adipisicing dolore",
      "requesterCanSee": false,
      "docType": "in esse nulla"
    }
  ]
});

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

try {
  const response = await fetch("http://localhost:91/api/2/assignments/:assignmentid", requestOptions);
  const result = await response.text();
  console.log(result)
} catch (error) {
  console.error(error);
};
```

{% endtab %}
{% endtabs %}

***

## Como finalizar uma atividade pendente atribuída à pessoa, utilizando API, o código da instância e o código original/integração (apelido do elemento da tarefa)?

É possível utilizar as API's do Zeev para finalizar atividades, enviando como parâmetros o código da instância e código original/Integração.\
Para isso a pessoa autenticada na API deve ser responsável pela tarefa.

{% hint style="warning" %}
Em raras situações, a consulta pelo código da instância da solicitação e pelo código original/integração ou apelido do elemento pode retornar mais de um registro. Nesse caso, será finalizada a primeira tarefa encontrada.
{% endhint %}

Siga os passos abaixo para finalizar a atividade de acordo com os critérios definidos acima:

1. **Autenticação**: Primeiro obtenha um [token de autenticação](https://kb.zeev.it/apis/como-gerar-tokens-para-autenticar-nas-apis) com permissão de realizar essa operação;
2. **Obtenha o Id da instância:** Obtenha o ID da instância que desjea finalizar, você pode fazer isso navegando nas páginas do Zeev, em Monitorar > Solicitações, em Acompanhar solicitações ou ainda utilizando as API's disponíveis como descrito nesta [página](/zeev/apis/all/instances/report.md);
3. **Obtenha o Código original (alias do elemento) da atividade pendente:** Você pode obter o código original da atividade na tela do modelador de processos ao abrir as configurações da atividade.\
   Se desejar, este valor também pode ser obtido utilizando API's, ele é uma propriedade que retorna em algumas consultas de atribuição de atividades como no endpoint [Listar minhas tarefas pendentes](/zeev/apis/all/assignments/my-tasks.md#api-2-assignments)**.** La este valor fica na seguinte estrutura do corpo de resposta instance > instanceTask > task > element > alias.\
   Consulte mais opções de API's que retornam estes dados em [Listar minhas tarefas pendentes](/zeev/apis/all/assignments/my-tasks.md);
4. **Obter os tipos de resultado possíveis**: Verifique as opções de botão disponíveis para finalizar a tarefa, obtenha na página de configuração da atividade através da modelagem do processo ou utilizando a API descrita em [#como-obter-a-lista-de-acoes-disponiveis-em-uma-atividade-utilizando-api](#como-obter-a-lista-de-acoes-disponiveis-em-uma-atividade-utilizando-api "mention").\
   Este valor deve ser informado no atributo result do corpo da requisição;
5. **Enviar a Requisição**: Utilize o endpoint [#api-2-assignments-instance-instanceid-code](#api-2-assignments-instance-instanceid-code "mention") para enviar a requisição conforme modelo e exemplo (Troque seu\_endereco.do.zeev pelo endereço que você usa para acessar o Zeev)

{% openapi src="/files/DYIxvabeLXa2mL6uE2si" path="/api/2/assignments/instance/{instanceid}/{code}" method="put" %}
[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 finalizar uma tarefa utilizando o alias do elemento

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

<pre class="language-javascript"><code class="lang-javascript"><strong>let instanceId=4321;
</strong><strong>let taskCode='T10';
</strong><strong>
</strong><strong>const myHeaders = new Headers();
</strong>myHeaders.append("Accept", "application/json");
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", "Bearer TOKEN_DO_USUARIO");

const raw = JSON.stringify({
  "result": "Resolvido"
});

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

try {
  const response = await fetch(`https://seu_endereco.do.zeev/api/2/assignments/instance/${instanceId}/${taskCode}`, requestOptions);
  const result = await response.json();
  console.log(result)
} catch (error) {
  console.error(error);
};
</code></pre>

{% endtab %}
{% endtabs %}

***

## Como obter a lista de ações / botões disponíveis para finalizar uma atividade / tarefa, utilizando API?

Para finalizar uma atividade utilizando as API's é preciso informar o parâmetro **result** que indica a ação executada. Imagine que a atividade exige uma avaliação e você deve conclui-la com uma aprovação ou reprovação.&#x20;

Este é o objetivo do atributo result.\
Para obter os valores disponíveis que podem ser utilizados no atributo result utilizando API, você deve seguir os passos abaixo:

1. **Autenticação**: Primeiro obtenha um [token de autenticação](https://kb.zeev.it/apis/como-gerar-tokens-para-autenticar-nas-apis) com permissão de realizar essa operação;
2. **Enviar a Requisição**: Utilize o endpoint [#api-2-assignments-assignmentid-actions](#api-2-assignments-assignmentid-actions "mention") para enviar a requisição conforme modelo e exemplo (Troque seu\_endereco.do.zeev pelo endereço que você usa para acessar o Zeev):

{% openapi src="/files/DYIxvabeLXa2mL6uE2si" path="/api/2/assignments/{assignmentid}/actions" method="get" %}
[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 %}

## **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)
* [Como executar tarefas](/zeev/dia-a-dia/como-executar-tarefas.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/assignments/finish.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.
