Skip to content

API de emissores

Gerencie emissores de distintivos — as organizações ou pessoas que concedem distintivos.

Todos os endpoints exigem autenticação pelo cabeçalho X-Api-Key. Veja Autenticação.

Criar emissor

Cria um novo emissor de distintivos.

POST /issuers

Parâmetros

ParâmetroTipoObrigatórioDescrição
namestringSimNome da organização (mínimo de 3 caracteres)
urlstringSimSite da organização (precisa ser uma URL HTTP/HTTPS válida)
emailstringSimE-mail de contato do emissor
logostringNãoImagem codificada em Base64 (PNG ou JPG)
linkedinOrganizationIdstringNãoID numérico da página de empresa no LinkedIn. Quando definido, toda página pública de concessão deste emissor exibe um botão Adicionar ao perfil do LinkedIn.

Exemplo

bash
curl -X POST https://api.badges.ninja/issuers \
  -H "X-Api-Key: bws_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "parameters": {
      "name": "Acme Academy",
      "url": "https://acme.example.com",
      "email": "badges@acme.example.com"
    }
  }'

Resposta

json
{
  "statusCode": 200,
  "info": {
    "issuerId": "https://api.badges.ninja/certify-badge/issuer/a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  }
}

Observações

  • Conta no limite de emissores do seu plano (Free: 1, Starter: 5, Pro: ilimitado). Não desconta cota.
  • Se o e-mail do emissor coincide com o e-mail da sua conta, o emissor é verificado automaticamente.
  • Se o e-mail for diferente, um e-mail de verificação é enviado ao e-mail do emissor.

Listar emissores

Recupera todos os emissores que você criou.

GET /issuers

Exemplo

bash
curl -X GET https://api.badges.ninja/issuers \
  -H "X-Api-Key: bws_your_api_key_here"

Resposta

json
{
  "statusCode": 200,
  "info": {
    "issuers": [
      {
        "id": "https://api.badges.ninja/certify-badge/issuer/a1b2c3d4-...",
        "name": "Acme Academy",
        "url": "https://acme.example.com",
        "email": "badges@acme.example.com",
        "verified": true,
        "timestamp": "2025-01-15T10:30:00.000Z"
      }
    ]
  }
}

Verificar emissor

Verifica um emissor usando o código de verificação enviado ao seu e-mail.

POST /issuers/{issuerId}/verify

Parâmetros

ParâmetroTipoObrigatórioDescrição
issuerIdstringSimO ID do emissor (parâmetro de caminho)
codestringSimO código de verificação do e-mail

Exemplo

bash
curl -X POST https://api.badges.ninja/issuers/a1b2c3d4-e5f6-7890-abcd-ef1234567890/verify \
  -H "X-Api-Key: bws_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "parameters": {
      "issuerId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "code": "ABC123"
    }
  }'

Resposta

json
{
  "statusCode": 200,
  "info": {
    "verified": true
  }
}

Excluir emissor

Exclui um emissor. O emissor não pode ter distintivos.

DELETE /issuers/{issuerId}

Exemplo

bash
curl -X DELETE https://api.badges.ninja/issuers/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
  -H "X-Api-Key: bws_your_api_key_here"

Resposta

json
{
  "statusCode": 200,
  "info": {
    "deleted": true
  }
}

Erros

  • 400 — o emissor tem distintivos ou concessões e não pode ser excluído (exclua-os primeiro)
  • 404 — emissor não encontrado

Atualizar emissor

Atualiza os campos de um emissor não verificado. Após o emissor ser verificado, apenas logo e linkedinOrganizationId continuam editáveis, para preservar a estabilidade das credenciais.

PUT /issuers/{issuerId}

Parâmetros

ParâmetroTipoObrigatórioDescrição
issuerIdstringSimO ID do emissor (parâmetro de caminho)
namestringNãoNovo nome (apenas se não verificado)
urlstringNãoNova URL (apenas se não verificado)
emailstringNãoNovo e-mail (apenas se não verificado — envia um novo e-mail de verificação)
logostringNãoNovo logo codificado em Base64
linkedinOrganizationIdstringNãoNovo ID de organização do LinkedIn (ou string vazia para remover)

Rotacionar código de verificação

Invalida o link de verificação anterior e envia outro por e-mail. Válido apenas enquanto o emissor ainda não estiver verificado.

POST /issuers/{issuerId}/rotate-code

Resposta

json
{
  "statusCode": 200,
  "info": {
    "sent": true
  }
}

badges.ninja Documentation