Qualquer código de erro HTTP seria inapropriado. Não há nenhum erro ou problema de qualquer tipo na perspectiva HTTP, portanto deve ser algo no intervalo 200. Você informa educadamente alguns de seus usuários que eles não serão atendidos enviando de volta um documento que os informa. E tudo isso vai bem.
O usuário não poderá usar seu aplicativo . Essa é uma decisão consciente tomada pela lógica de negócios, não um acidente. No nível HTTP, tudo é honky dory.
Editar
Parece que o que estamos vendo aqui é um choque entre a velha escola e a nova escola. Quando o HTTP foi projetado, não havia serviços da Web, não havia princípios SOAP, JSON ou REST. Como um protocolo acima do TCP, isso já era considerado (próximo) ao nível do aplicativo e muitos códigos de status de alto nível foram definidos. Quando a Web começou a ser usada para serviços mais sofisticados e de alto nível e um meio comum de transportar "envelopes" era necessária, os designers fizeram o upload do HTTP, em vez de definir um protocolo mais novo e limpo, apenas porque o HTTP era onipresente.
Portanto, em um contexto moderno de serviço da web, o HTTP é realmente pouco mais que uma camada de transporte idiota e a maioria de seus códigos pode ser considerada não aplicável ou obsoleta. Basta escolher um porque ele se aproxima do estado do aplicativo e está nessa lista que antes significava que algo pode parecer inofensivo, mas acho que enviaria uma mensagem errada. Você não deseja que o HTTP desempenhe essa função reguladora em um contexto de serviço da web.