> ## Documentation Index
> Fetch the complete documentation index at: https://docs-platform.services-valid.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Listar provedores de certificado em nuvem

> Lista os provedores (PSCs) com certificado em nuvem emitido para o CPF do signatário.

Lista os provedores de serviço de confiança (PSCs) — como VIDaaS, BirdID, SafeID e SerproID — que possuem certificado em nuvem emitido para o CPF do signatário. Use esta chamada para oferecer ao signatário as opções de certificado disponíveis.

**Autenticação**: use apenas o `sessionToken` na URL — nenhum header de autenticação é necessário.

## Parâmetros

<ParamField path="sessionToken" type="string" required>
  Token único da sessão do signatário (obtido em [`POST /signer/v1/envelopes`](/plataforma/assinatura-digital/api/post-envelope) ou [`POST /signer/v1/templates/:uuid/envelopes`](/plataforma/assinatura-digital/api/post-template-envelope)).
</ParamField>

## Respostas

<ResponseField name="available" type="boolean" required>
  Se o CPF do signatário tem certificado em nuvem em pelo menos um provedor.
</ResponseField>

<ResponseField name="clearances" type="array">
  Lista de provedores disponíveis. Vazio se nenhum certificado foi encontrado (`available: false`).

  <Expandable title="Propriedades de clearances[]">
    <ResponseField name="clearanceId" type="string">
      Identificador opaco da opção. Devolva este valor em [`POST .../integraicp/start`](/plataforma/assinatura-digital/api/post-integraicp-start).
    </ResponseField>

    <ResponseField name="providerName" type="string">
      Nome do provedor, ex.: `"Valid"`, `"Soluti"`, `"SafeWeb"`, `"Serpro"`, `"CertiSign"`.
    </ResponseField>

    <ResponseField name="productName" type="string">
      Nome do produto do provedor, ex.: `"VIDaaS"`, `"BirdID"`, `"SafeID"`, `"SerproID"`, `"RemoteID"`.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="expiresAt" type="string" nullable>
  Timestamp (ISO 8601) até quando as opções valem. Após expiração, liste de novo.
</ResponseField>

<ResponseField name="providerStatus" type="string" nullable>
  Estado devolvido pelo hub IntegraICP, ex.: `PENDING_AUTHORIZATION`, `UNAVAILABLE_CLEARANCES`.
</ResponseField>

## Erros

Veja [Autenticação e erros](/plataforma/assinatura-digital/api/erros-e-autenticacao).

* **410**: Session token expirado (envelope expirou ou foi deletado).
* **502**: O hub IntegraICP não respondeu ou respondeu com erro.
* **503**: Integração IntegraICP não configurada no ambiente.

<ResponseExample>
  ```json theme={"theme":"catppuccin-latte"}
  HTTP/1.1 200 OK
  Content-Type: application/json

  {
    "available": true,
    "clearances": [
      {
        "clearanceId": "01HXYZCLEARANCE001",
        "providerName": "Valid",
        "productName": "VIDaaS"
      },
      {
        "clearanceId": "01HXYZCLEARANCE002",
        "providerName": "Soluti",
        "productName": "BirdID"
      }
    ],
    "expiresAt": "2025-07-27T18:00:00Z",
    "providerStatus": "PENDING_AUTHORIZATION"
  }
  ```

  ```json theme={"theme":"catppuccin-latte"}
  HTTP/1.1 200 OK
  Content-Type: application/json

  {
    "available": false,
    "clearances": [],
    "expiresAt": null,
    "providerStatus": "UNAVAILABLE_CLEARANCES"
  }
  ```

  ```json theme={"theme":"catppuccin-latte"}
  HTTP/1.1 410 Gone
  Content-Type: application/json

  {
    "statusCode": 410,
    "message": "Session expired"
  }
  ```
</ResponseExample>

## Exemplo

```bash theme={"theme":"catppuccin-latte"}
curl -X GET "https://api.valid.com/signer/v1/sign/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.../integraicp/clearances" \
  -H "Content-Type: application/json"
```

## Importante

* **Lista vazia não é erro**: se `available: false`, significa que o CPF do signatário não tem certificado em nuvem em nenhum provedor — é um resultado válido.
* **Prazo de validade**: as opções devolvidas valem até `expiresAt`. Após essa data, liste de novo antes de oferecer as mesmas opções.
* **Sem header de autenticação**: o `sessionToken` é toda a autenticação necessária.

## Próximas etapas

1. Se `available: true` e há opções, mostre ao signatário e deixe escolher.
2. Ao escolher, chame [`POST .../integraicp/start`](/plataforma/assinatura-digital/api/post-integraicp-start) com o `clearanceId` da opção selecionada.
3. Redirecione o navegador do signatário para o `redirectUrl` devolvido.

## Relacionado

* [`POST .../integraicp/start`](/plataforma/assinatura-digital/api/post-integraicp-start) — registrar a escolha e obter URL de autenticação
* [`GET .../integraicp/authorization`](/plataforma/assinatura-digital/api/get-integraicp-authorization-status) — verificar o estado da autorização
* [`POST /signer/v1/sign/:sessionToken/sign`](/plataforma/assinatura-digital/api/post-sign) — assinar após autorizado


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.