# Configurar login único

`PUT /v1/sso`

Liga o login único (OIDC) da empresa para a Conta. Quem entra por ele usa o segundo fator da própria empresa. Só administrador.

## Corpo (`application/json`)

| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `client_id` | texto | sim | Identificador do cliente no emissor |
| `client_secret` | texto | sim | Segredo do cliente no emissor |
| `emissor` | texto | sim | Endereço `https://` do emissor OIDC |

## Respostas

| HTTP | Significa |
|---|---|
| 204 | Sem conteúdo |
| 422 | Corpo ou parâmetros com formato inválido (`detail` lista os campos) |

## Erros

Recusas vêm como `{"detail": {"erro": "<código>", "mensagem": "…"}}`.

| HTTP | `erro` | Significa |
|---|---|---|
| 401 | — | Chave ausente ou inválida |

## Exemplos de requisição

### Bash

```bash
curl -X PUT 'https://sync.lops.com.br/v1/sso' \
  -H "Authorization: Bearer $SYNC_CHAVE" \
  -H 'Content-Type: application/json' \
  -d '{"emissor":"https://login.escritorio.com.br","client_id":"sync","client_secret":"****"}'
```

### JavaScript

```javascript
const resposta = await fetch("https://sync.lops.com.br/v1/sso", {
  method: "PUT",
  headers: {
    Authorization: `Bearer ${process.env.SYNC_CHAVE}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "emissor": "https://login.escritorio.com.br",
    "client_id": "sync",
    "client_secret": "****"
  }),
});
console.log(resposta.status); // 204
```

### Python

```python
import os

import requests

resposta = requests.put(
    "https://sync.lops.com.br/v1/sso",
    headers={"Authorization": f"Bearer {os.environ['SYNC_CHAVE']}"},
    json={
        "emissor": "https://login.escritorio.com.br",
        "client_id": "sync",
        "client_secret": "****",
    },
)
print(resposta.status_code)  # 204
```

### PHP

```php
<?php
$ch = curl_init('https://sync.lops.com.br/v1/sso');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'PUT',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . getenv('SYNC_CHAVE'),
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'emissor' => 'https://login.escritorio.com.br',
        'client_id' => 'sync',
        'client_secret' => '****',
    ]),
]);
$corpo = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
var_dump($status, json_decode($corpo, true));
```
