> For the complete documentation index, see [llms.txt](https://docs.autentique.com.br/api/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.autentique.com.br/api/2/queries/resgatando-documentos.md).

# Resgatando Documentos

Quase tudo o que você precisa saber para listar ou buscar documentos específicos de um usuário.

{% hint style="warning" %}
Evite utilizar estes métodos para consultar o status das assinaturas frequentemente. Os [*webhooks*](/api/2/integracao/webhooks-1.md) são uma forma mais rápida e eficiente de fazer isso (e o nosso *backend* agradece :sweat\_smile: )
{% endhint %}

### Resgatando um documento específico

No [Altair](https://altair.autentique.com.br), você pode testar com o item **Resgatar documento** da *collection* pronta. Não esqueça de completar a *query* com o ID de um documento existente para buscar:

```graphql
# Se copiar a query, lembre de remover os comentários

query {
  document(id: "ID_DO_DOCUMENTO") {
    id
    name
    refusable
    sortable
    created_at
    files { original signed pades }
    signatures {
      public_id
      name
      email
      created_at
      action { name }
      link { short_link } # Link de assinatura se signatário for adicionado por "name" ao invés de "email"
      user { id name email phone }
      user_data { name email phone } # Dados relacionados ao lock_user_data na criação do documento
      email_events {
        sent # Timestamp de confirmação de envio do email
        opened # Timestamp abertura do email (pode não registrar em alguns clientes de email)
        delivered # Timestamp de confirmação do recebimento do email no cliente
        refused # Timestamp de erro no envio do email
        reason # Mensagem de erro retornada ao ocorrer erro no envio
      }
      viewed { ...event } # Quando o signatário visualizar
      signed { ...event } # Quando o signatário assinar
      rejected { ...event } # Quando o signatário rejeitar
      signed_unapproved { ...event } # Quando signatário assinar, mas pendente de aprovação biométrica
      biometric_approved { ...event } # Quando biometria do signatário que estiver pendente de aprovação for aprovada
      biometric_rejected { ...event } # Quando biometria do signatário que estiver pendente de aprovação for rejeitada
    }
  }
}

fragment event on Event {
  ip
  port
  reason
  created_at
  geolocation {
    country
    countryISO
    state
    stateISO
    city
    zipcode
    latitude
    longitude
  }
}
```

Você pode conferir o resultado direto no [Altair](https://altair.autentique.com.br):

![](https://469185076-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXffZ8FZep2ukRK-gJz%2F-LzJ8dX5-cVLAGSwwWf3%2F-LzJCKOUcsuOLiDHMkZW%2Fimage.png?alt=media\&token=8f5427df-5a10-4246-b7cd-a290cb6926b9)

Da mesma forma, você pode usar *fragments* como uma forma de evitar repetição nas *queries* com o GraphQL.

Você também pode consultar vários documentos ao mesmo tempo:

```graphql
query {
  primeiro: document(id: "ID_DO_DOCUMENTO_1") { name }
  segundo: document(id: "ID_DO_DOCUMENTO_2") { name }
  terceiro: document(id: "ID_DO_DOCUMENTO_3") { name }
}
```

![](https://469185076-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXffZ8FZep2ukRK-gJz%2F-LzJ8dX5-cVLAGSwwWf3%2F-LzJClNbpPtWIEyg356R%2Fimage.png?alt=media\&token=a7db5723-440d-4c7a-9d02-b5747f54d1c4)

E, assim como mostra na imagem acima, você também pode nomear as *queries*. (OBS: O nome não pode conter somente números)

### Listando documentos

Também é possível retornar páginas contendo múltiplos documentos:

```graphql
query {
  documents(limit: 60, page: 1) {
    total
    data {
      id
      name
      refusable
      sortable
      created_at
      signatures {
        public_id
        name
        email
        created_at
        action { name }
        link { short_link }
        user { id name email }
        viewed { created_at }
        signed { created_at }
        rejected { created_at }
      }
      files { original signed }
    }
  }
}
```

![](https://469185076-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXffZ8FZep2ukRK-gJz%2F-LzJ8dX5-cVLAGSwwWf3%2F-LzJCucTnPOFhIZZOCuC%2Fimage.png?alt=media\&token=ec7b3c1b-afd7-45f0-8be9-4a35f014af4d)

#### Resgatando documentos de uma pasta

Também é possível resgatar os documentos contidos em uma pasta:

```graphql
query{
  documentsByFolder(folder_id: "ID_DA_PASTA", limit: 60, page: 1) {
    data {
      id
      name
      qualified
      sandbox
      created_at
      deleted_at
    }
    has_more_pages
  }
}
```

A *query* em si é praticamente igual à de listar documentos, a única diferença é que pode-se especificar um id de uma pasta para realizar a busca. As informações retornadas também são do mesmo tipo que a requisição anterior.

<figure><img src="https://469185076-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LXffZ8FZep2ukRK-gJz-887967055%2Fuploads%2FZP1TYgz0hNqkHCL2MCqi%2FScreenshot%202024-03-14%20at%2009.53.03.png?alt=media&amp;token=8c0c7736-d15b-4c3a-a601-5b28a3c1e00e" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Você pode conferir o que é cada um desses parâmetros direto na documentação completa da API GraphQL, no menu Docs do [Altair](https://altair.autentique.com.br). Se você não sabe como fazer isso, confira o nosso tutorial em [Usando o Altair](/api/2/integracao/altair.md)
{% endhint %}

{% hint style="info" %}
Se o Altair não te ajuda para integrar com a API, confira alguns exemplos de como fazer essas requisições de outra forma: <https://graphql.org/graphql-js/graphql-clients/>
{% endhint %}

{% file src="/files/-M03o9cE5QB3vLoPUlzJ" %}
Para importar e usar no Postman
{% endfile %}
