Erros e respostas
Sucesso
Uma resposta bem-sucedida envolve o resultado em data. As listas acrescentam pagination.
json
{
"data": [ { "id": "…", "slug": "spring", "shortLink": "https://rvlnk.link/spring" } ],
"pagination": { "page": 1, "limit": 50, "total": 1 }
}
Erros
Os erros chegam com o status HTTP correspondente e sempre têm este formato:
json
{
"error": {
"code": "conflict",
"message": "This slug is already taken."
}
}
| HTTP | code | Significado |
|---|---|---|
| 400 | invalid_request | A requisição está errada. message diz o quê. |
| 401 | unauthorized | Não há chave, ou a chave é inválida ou expirou. |
| 403 | forbidden | A chave não tem uma permissão (error.requiredPermission), ou o papel do dono da chave não permite a ação. |
| 403 | license_limit_reached | Um limite do plano foi atingido. error.licenseLimitReached é true. error.licenseExpired é true quando o plano expirou. |
| 404 | not_found | Esse item não existe neste espaço de trabalho. |
| 409 | conflict | Já existe, por exemplo um slug ou um nome de tag em uso. |
| 429 | rate_limited | Mais de 300 requisições por minuto para a chave. Veja Retry-After. |
| 5xx | internal_error | Algo deu errado do nosso lado. |
Requisições em massa
A criação, a atualização e a exclusão em massa retornam HTTP 200 e informam cada item separadamente. Um item com falha não interrompe os outros. Um item com falha tem error e code (os mesmos códigos acima), além de index (posição no array da requisição, na criação) ou id (na atualização e na exclusão).
json
{
"data": {
"created": [ { "id": "…", "slug": "a1", "shortLink": "https://rvlnk.link/a1" } ],
"failed": [ { "index": 1, "error": "This slug is already taken.", "code": "conflict" } ]
}
}
Paginação
GET /links aceita page (padrão 1) e limit (padrão 50, máximo 200).