# Ver a conta, a chave e os limites

> Útil para testar a chave e ver os escopos efetivos (escopos da chave que a pessoa que a criou ainda tem permissão para usar).

URL: https://precificador3d.com.br/docs/api/referencia/obter-conta

`GET https://api.precificador3d.com.br/v1/conta`

Útil para testar a chave e ver os escopos efetivos (escopos da chave que a pessoa que a criou ainda tem permissão para usar).

## Parâmetros

| Nome | Onde | Tipo | Obrigatório | Descrição |
| --- | --- | --- | --- | --- |
| `If-None-Match` | header | string | não | ETag recebida antes. Se nada mudou, a resposta é `304` e não gasta a cota mensal. (até 100 caracteres) |

## Resposta 200

Conta da chave.

| Campo | Tipo | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `id` | string (uuid) | sim |  |
| `nome` | string | sim |  |
| `plano` | string | sim | Valores: `bancada`, `oficina`, `farm`. |
| `chave` | object | sim |  |
| `chave.id` | string (uuid) | sim |  |
| `chave.nome` | string | sim | (até 60 caracteres) |
| `chave.prefixo` | string | sim | Início da chave, para reconhecer (nunca a chave inteira). |
| `chave.escopos` | array de string | sim |  |
| `chave.escopos_efetivos` | array de string | sim | Escopos da chave que quem a criou ainda pode usar. |
| `chave.expira_em` | string (date-time) \| null | sim |  |
| `limites` | object | sim |  |
| `limites.rajada_por_segundo` | integer | sim |  |
| `limites.rajada_capacidade` | integer | sim |  |
| `limites.leitura_por_minuto` | integer | sim |  |
| `limites.escrita_por_minuto` | integer | sim |  |
| `limites.mes` | integer | sim |  |
| `limites.mes_usado` | integer | sim |  |

```json
{
  "id": "0b8e4c7a-5d2f-4a8e-9c1b-2f3a4b5c6d7e",
  "nome": "Ateliê Exemplo",
  "plano": "oficina",
  "chave": {
    "id": "9a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
    "nome": "Loja Exemplo",
    "prefixo": "pc3d_live_EXEMPLO",
    "escopos": [
      "produtos:ler",
      "estoque:ler",
      "cotacoes:escrever"
    ],
    "escopos_efetivos": [
      "produtos:ler",
      "estoque:ler",
      "cotacoes:escrever"
    ],
    "expira_em": "2027-10-03T12:00:00-03:00"
  },
  "limites": {
    "rajada_por_segundo": 2,
    "rajada_capacidade": 10,
    "leitura_por_minuto": 60,
    "escrita_por_minuto": 20,
    "mes": 150000,
    "mes_usado": 1820
  }
}
```

## Outras respostas

- **304**: Nada mudou desde a ETag informada.
- **401** (`nao_autenticado`): Chave ausente, malformada, desconhecida, revogada ou expirada (a resposta é a mesma para todos os casos).
- **403** (`escopo_insuficiente`): Escopo insuficiente, conta bloqueada, módulo desligado ou chave suspensa.
- **429** (`limite_excedido`): Limite de uso excedido (rajada, minuto, mês ou requisições simultâneas).
- **500** (`erro_interno`): Erro interno. O detalhe fica no log, ligado ao requisicao_id.
- **503** (`indisponivel`): API desligada, sob pressão (disjuntor aberto) ou no limite global da plataforma.

## Exemplos

**cURL**

```bash
curl "https://api.precificador3d.com.br/v1/conta" \
  -H "Authorization: Bearer $PC3D_CHAVE"
```

**JavaScript**

```js
const resposta = await fetch('https://api.precificador3d.com.br/v1/conta', {
  headers: {
    Authorization: `Bearer ${process.env.PC3D_CHAVE}`,
  },
});
if (!resposta.ok) {
  const erro = await resposta.json(); // application/problem+json
  throw new Error(`${erro.codigo}: ${erro.detail} (${erro.requisicao_id})`);
}
const dados = await resposta.json();
```

**Python**

```python
import os

import requests

resposta = requests.get(
    "https://api.precificador3d.com.br/v1/conta",
    headers={
        "Authorization": f"Bearer {os.environ['PC3D_CHAVE']}",
    },
    timeout=10,
)
resposta.raise_for_status()
dados = resposta.json()
```
