Estou projetando uma API REST para um projeto em que os usuários estão sempre em um dos vários "planos" - cada plano define alguns limites de recursos, como o número máximo de usuários que uma conta pode ter ou o número máximo de dados que eles podem carregar. Quando um desses limites é atingido, os usuários podem atualizar seus planos (essencialmente pagam) para obter mais recursos.
Desejo retornar um código de status especial indicando uma situação em que a ação não pode ser executada devido aos limites de recursos da conta e a atualização do plano resolverá isso - por exemplo, se um usuário usar 100% de sua capacidade de armazenamento e tentar fazer upload de um arquivo adicional , eles receberão esta resposta.
Os candidatos são, IMHO:
403 Forbidden
- no entanto, gostaria de distinguir entre este e outros casos em que o usuário simplesmente não tem permissão para executar esta ação.401 Unauthorized
- não é uma boa ideia, estamos usando isso para problemas relacionados à autenticação.402 Payment Required
- faz algum sentido, mas estou preocupado em usar um código de status não padronizado, mas reservadoAlgo ainda menos padrão, como
423 Locked
improvável, o usaremos para qualquer outra coisa no futuro
Outra opção é usar algo muito padrão, como 403
mas indicar as especificidades do erro no corpo da resposta.
Estou imaginando qual abordagem você acredita que (a) funcionaria melhor a longo prazo e (b) se manteria mais bem nos princípios RESTful.