> ## 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.

# Autenticar via certificado

> Autentica um usuário com base nos dados de um certificado digital em base64 e retorna o access_token e refresh_token usando o grant custom_certificate.

## Request Body

<ParamField body="client_id" type="integer" required>
  ID do cliente OAuth. **Exemplo**: `1`
</ParamField>

<ParamField body="client_secret" type="string" required>
  Segredo do cliente OAuth. **Exemplo**: `seu-client-secret`
</ParamField>

<ParamField body="certificate" type="string" required>
  Certificado digital em base64 (formato X.509). **Exemplo**:
  `MIIDdzCCAl+gAwIBAgIEU0B...`
</ParamField>

## Response

<ResponseField name="token_type" type="string">
  Tipo do token. **Exemplo**: `Bearer`
</ResponseField>

<ResponseField name="expires_in" type="integer">
  Tempo de expiração em segundos. **Exemplo**: `10800`
</ResponseField>

<ResponseField name="access_token" type="string">
  Token de acesso JWT. **Exemplo**: `eyJ0eXAiOiJKV1QiLCJhbGci...`
</ResponseField>

<ResponseField name="refresh_token" type="string">
  Token para atualização. **Exemplo**: `def502001234abc...`
</ResponseField>

<ResponseExample>
  ```json 200 OK theme={"theme":"catppuccin-latte"}
  {
    "token_type": "Bearer",
    "expires_in": 10800,
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGci...",
    "refresh_token": "def502001234abc..."
  }
  ```

  ```json 400 Certificado inválido theme={"theme":"catppuccin-latte"}
  {
    "error": "Certificado sem dados suficientes."
  }
  ```

  ```json 401 Falha de autenticação theme={"theme":"catppuccin-latte"}
  {
    "error": "Certificado inválido, revogado ou expirado."
  }
  ```
</ResponseExample>
