Skip to main content

GET /licenses

Lista todas as licenças de uma aplicação, com suporte a filtros e paginação.

Parâmetros da requisição

app_id
string
required
Identificador da aplicação. Filtra as licenças retornadas para essa aplicação.
status
string
Filtra pelo status da licença. Valores aceitos: active, expired, suspended.
page
number
default:"1"
Número da página para paginação dos resultados.
limit
number
default:"20"
Quantidade de resultados por página. Máximo: 100.

Exemplo de requisição

curl --request GET \
  --url 'https://api.bluube.com/v1/licenses?app_id=app_9f3d2a1b&status=active&page=1&limit=20' \
  --header 'Authorization: Bearer blv_live_abc123xyz'

Exemplo de resposta

{
  "data": [
    {
      "id": "lic_7c4e2f9a",
      "key": "BLUUBE-A1B2-C3D4-E5F6",
      "app_id": "app_9f3d2a1b",
      "status": "active",
      "type": "permanent",
      "expires_at": null,
      "max_activations": 3,
      "activations_used": 1,
      "created_at": "2026-01-15T10:30:00Z"
    },
    {
      "id": "lic_3a8d1c6b",
      "key": "BLUUBE-G7H8-I9J0-K1L2",
      "app_id": "app_9f3d2a1b",
      "status": "active",
      "type": "trial",
      "expires_at": "2026-04-30T23:59:59Z",
      "max_activations": 1,
      "activations_used": 1,
      "created_at": "2026-03-01T08:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 2,
    "total_pages": 1
  }
}

Campos da resposta

data
object[]
Lista de objetos de licença.
pagination
object
Metadados de paginação.

POST /licenses

Cria uma nova licença para uma aplicação.

Parâmetros da requisição

app_id
string
required
Identificador da aplicação à qual a licença será vinculada.
type
string
required
Tipo da licença. Valores aceitos: permanent, trial, time_limited.
expires_at
string
Data de expiração no formato ISO 8601 (ex: 2026-12-31T23:59:59Z). Obrigatório para licenças do tipo time_limited.
max_activations
integer
Número máximo de dispositivos que podem ativar a licença. Omita para ilimitado.
metadata
object
Dados adicionais em formato chave-valor. Útil para associar informações do seu sistema, como ID do cliente ou plano de assinatura.

Exemplo de requisição

curl --request POST \
  --url https://api.bluube.com/v1/licenses \
  --header 'Authorization: Bearer blv_live_abc123xyz' \
  --header 'Content-Type: application/json' \
  --data '{
    "app_id": "app_9f3d2a1b",
    "type": "time_limited",
    "expires_at": "2026-12-31T23:59:59Z",
    "max_activations": 5,
    "metadata": {
      "customer_id": "cust_4f2e1a9b",
      "plan": "pro"
    }
  }'

Exemplo de resposta

{
  "id": "lic_2b5f8e3d",
  "key": "BLUUBE-M3N4-O5P6-Q7R8",
  "app_id": "app_9f3d2a1b",
  "status": "active",
  "type": "time_limited",
  "expires_at": "2026-12-31T23:59:59Z",
  "max_activations": 5,
  "activations_used": 0,
  "metadata": {
    "customer_id": "cust_4f2e1a9b",
    "plan": "pro"
  },
  "created_at": "2026-04-06T14:22:10Z"
}

Campos da resposta

id
string
Identificador único da licença criada.
key
string
Chave de licença gerada automaticamente para ser distribuída ao usuário final.
app_id
string
Identificador da aplicação à qual a licença está vinculada.
status
string
Status inicial da licença. Sempre active na criação.
type
string
Tipo da licença: permanent, trial ou time_limited.
expires_at
string | null
Data e hora de expiração no formato ISO 8601. null para licenças permanentes.
max_activations
integer | null
Número máximo de ativações permitidas. null para ilimitado.
activations_used
integer
Número de ativações realizadas. Sempre 0 na criação.
metadata
object
Dados adicionais fornecidos na criação.
created_at
string
Data e hora de criação no formato ISO 8601.

GET /licenses/{id}

Retorna os detalhes de uma licença específica.

Parâmetros da requisição

id
string
required
Identificador único da licença (ex: lic_2b5f8e3d).

Exemplo de requisição

curl --request GET \
  --url https://api.bluube.com/v1/licenses/lic_2b5f8e3d \
  --header 'Authorization: Bearer blv_live_abc123xyz'

Exemplo de resposta

{
  "id": "lic_2b5f8e3d",
  "key": "BLUUBE-M3N4-O5P6-Q7R8",
  "app_id": "app_9f3d2a1b",
  "status": "active",
  "type": "time_limited",
  "expires_at": "2026-12-31T23:59:59Z",
  "max_activations": 5,
  "activations_used": 2,
  "metadata": {
    "customer_id": "cust_4f2e1a9b",
    "plan": "pro"
  },
  "created_at": "2026-04-06T14:22:10Z"
}

Campos da resposta

Os mesmos campos retornados em POST /licenses. Consulte a seção acima para a descrição de cada campo.

PATCH /licenses/{id}

Atualiza uma licença existente. Envie apenas os campos que deseja modificar.

Parâmetros da requisição

id
string
required
Identificador único da licença a ser atualizada.
status
string
Novo status da licença. Valores aceitos: active, suspended.
expires_at
string
Nova data de expiração no formato ISO 8601. Passa a valer imediatamente.
max_activations
integer
Novo limite de ativações. Deve ser maior ou igual ao número de ativações já realizadas.

Exemplo de requisição

curl --request PATCH \
  --url https://api.bluube.com/v1/licenses/lic_2b5f8e3d \
  --header 'Authorization: Bearer blv_live_abc123xyz' \
  --header 'Content-Type: application/json' \
  --data '{
    "status": "suspended",
    "expires_at": "2027-06-30T23:59:59Z"
  }'

Exemplo de resposta

{
  "id": "lic_2b5f8e3d",
  "key": "BLUUBE-M3N4-O5P6-Q7R8",
  "app_id": "app_9f3d2a1b",
  "status": "suspended",
  "type": "time_limited",
  "expires_at": "2027-06-30T23:59:59Z",
  "max_activations": 5,
  "activations_used": 2,
  "metadata": {
    "customer_id": "cust_4f2e1a9b",
    "plan": "pro"
  },
  "created_at": "2026-04-06T14:22:10Z"
}

Campos da resposta

O objeto de licença atualizado com os mesmos campos de POST /licenses.

DELETE /licenses/{id}

Revoga e exclui permanentemente uma licença. Esta ação não pode ser desfeita.

Parâmetros da requisição

id
string
required
Identificador único da licença a ser removida.

Exemplo de requisição

curl --request DELETE \
  --url https://api.bluube.com/v1/licenses/lic_2b5f8e3d \
  --header 'Authorization: Bearer blv_live_abc123xyz'

Resposta

Retorna 204 No Content sem corpo em caso de sucesso. Se a licença não for encontrada, retorna 404 Not Found:
{
  "error": "not_found",
  "message": "Licença não encontrada.",
  "code": "LICENSE_NOT_FOUND"
}