Introdução

Bem-vindo à documentação da API NeoCloud. Esta API permite integração com o ecossistema NeoCloud/NeoCash para gerenciamento de produtos, comandas, pagamentos e movimentações de restaurantes e estabelecimentos comerciais.

🌐 Base URL

PRODUÇÃO {BASE_URL_PRODUCAO}
HOMOLOGAÇÃO {BASE_URL_HOMOLOGACAO}

🔒 As URLs e tokens de acesso são fornecidos pela equipe NeoCloud aos parceiros de integração autorizados.

📋 Formato

Todas as requisições e respostas utilizam JSON. Defina o header Content-Type: application/json em requisições POST/PUT.

📄 Paginação

Endpoints que retornam listas suportam paginação via query string: ?pagina=1

⚠️ Rate Limiting

A API possui limite de 100 requisições por minuto por token. Requisições excedentes retornarão 429 Too Many Requests.

Exemplo de Requisição
curl -X GET \
  {BASE_URL}/api/neocloud/v1/categorias \
  -H "ApplicationToken: seu-app-token" \
  -H "CompanyToken: seu-company-token" \
  -H "DeviceToken: seu-device-token"
RESPOSTA
200 401 400
{
  "status": 200,
  "mensagem": "Sucesso.",
  "objeto": { ... }
}

Autenticação

Todas as requisições à API NeoCloud exigem 3 headers de autenticação. Esses tokens são fornecidos pela equipe Neo Mais no momento do cadastro da integração.

HeaderTipoObrigatórioDescrição
ApplicationTokenstringSimToken do sistema que está fazendo a integração
CompanyTokenstringSimToken da empresa/restaurante no NeoCloud
DeviceTokenstringNãoToken do dispositivo (tablet, celular). Obrigatório para endpoints de carga.

🔒 Segurança

Nunca exponha seus tokens em código client-side. Utilize um backend intermediário para fazer as chamadas à API.

ERRO 401 — Token Inválido
{
  "status": 401,
  "mensagem": "Não autorizado. CompanyToken inválido.",
  "objeto": "Organização não encontrada"
}

Login POST

POST/api/neocloud/v1/logindispositivo

Valida as credenciais de um usuário (garçom, gerente) e retorna os dados do dispositivo vinculado. As credenciais devem ser enviadas no corpo da requisição em formato JSON.

Request Body (JSON)

ParâmetroTipoObrigatórioDescrição
DsLoginstringSimLogin do usuário
VlSenhastringSimSenha do usuário

Respostas

200 Login bem-sucedido
401 Token inválido
404 Usuário/senha incorretos ou dispositivo não informado
Requisição
curl -X POST \
  "{BASE_URL}/api/neocloud/v1/logindispositivo" \
  -H "ApplicationToken: seu-app-token" \
  -H "CompanyToken: seu-company-token" \
  -H "DeviceToken: seu-device-token" \
  -H "Content-Type: application/json" \
  -d '{"DsLogin":"garcom01","VlSenha":"1234"}'
RESPOSTA 200
{
  "IdOrganizao": 1,
  "IdDispositivo": 10,
  "IdPessoaUsuario": 42,
  "Dslogin": "garcom01",
  "VlSenha": "1234"
}

Listar Categorias GET

GET/api/neocloud/v1/categorias

Retorna todas as categorias do cardápio (Entradas, Pratos Principais, Bebidas, Sobremesas, etc.).

Respostas

200 Lista de categorias retornada
401 Token inválido

💡 Dica

Use /api/neocloud/v1/produtocategoria para obter o vínculo entre produtos e categorias.

Requisição
curl -X GET \
  {BASE_URL}/api/neocloud/v1/categorias \
  -H "ApplicationToken: seu-app-token" \
  -H "CompanyToken: seu-company-token"
RESPOSTA 200
[
  {
    "IdOrganizacao": 1,
    "IdCategoria": 10,
    "DsCategoria": "Entradas",
    "IdCategoriaPai": null,
    "BnAtivo": true
  },
  {
    "IdOrganizacao": 1,
    "IdCategoria": 20,
    "DsCategoria": "Pratos Principais",
    "IdCategoriaPai": null,
    "BnAtivo": true
  },
  {
    "IdOrganizacao": 1,
    "IdCategoria": 30,
    "DsCategoria": "Bebidas",
    "IdCategoriaPai": null,
    "BnAtivo": true
  }
]

Listar Produtos GET

GET/api/neocloud/v1/produtos

Retorna todos os produtos cadastrados no sistema (itens do cardápio, bebidas, etc.).

Respostas

200 Lista de produtos retornada
401 Token inválido
Requisição
curl -X GET \
  {BASE_URL}/api/neocloud/v1/produtos \
  -H "ApplicationToken: seu-app-token" \
  -H "CompanyToken: seu-company-token"
RESPOSTA 200
[
  {
    "IdProduto": 101,
    "DsProduto": "Picanha Completa 400g",
    "DsProdutoResumido": "Picanha 400g",
    "VlVenda": 59.90,
    "IdCategoria": 20,
    "BnAtivo": true,
    "DsGtin": "7891234567890"
  },
  {
    "IdProduto": 205,
    "DsProduto": "Coca-Cola 600ml",
    "DsProdutoResumido": "Coca 600ml",
    "VlVenda": 10.00,
    "IdCategoria": 30,
    "BnAtivo": true,
    "DsGtin": "7891234567891"
  }
]

Buscar Preço GET

GET/api/neocloud/v1/produtopreco

Retorna o preço atualizado de um produto, considerando a tabela de preço ativa (ex: Happy Hour, Delivery).

Query Parameters

ParâmetroTipoObrigatórioDescrição
idintegerSimID do produto
Requisição
curl -X GET \
  "{BASE_URL}/api/neocloud/v1/produtopreco?id=101" \
  -H "ApplicationToken: seu-app-token" \
  -H "CompanyToken: seu-company-token"
RESPOSTA 200
{
  "IdProduto": 101,
  "VlVenda": 59.90,
  "VlPromocional": null,
  "BnPromocaoAtiva": false
}

Abrir Comanda POST

POST/api/neocloud/v1/comanda/abrir

Cria uma nova comanda individual para uma pessoa em uma mesa. Cada pessoa na mesa recebe sua própria comanda, vinculadas pelo id_mesa_agrupamento.

Request Body

CampoTipoObrigatórioDescrição
id_mesa_agrupamentointegerSimNúmero da mesa física do restaurante
ds_nome_pessoastringSimNome da pessoa dona da comanda
vl_telefone_pessoastringNãoTelefone para fidelização
ds_observacaostringNãoObservações (ex: alergias)

Respostas

200 Comanda criada com sucesso
401 Token inválido
406 Campos obrigatórios ausentes
Requisição
curl -X POST \
  {BASE_URL}/api/neocloud/v1/comanda/abrir \
  -H "ApplicationToken: seu-app-token" \
  -H "CompanyToken: seu-company-token" \
  -H "Content-Type: application/json" \
  -d '{
    "id_mesa_agrupamento": 5,
    "ds_nome_pessoa": "João Silva",
    "vl_telefone_pessoa": "11999887766",
    "ds_observacao": "Alergia a camarão"
  }'
RESPOSTA
200 406
{
  "status": 200,
  "mensagem": "Comanda aberta com sucesso.",
  "objeto": {
    "id_organizacao": 1,
    "id_empresa": 1,
    "id_movimentacao": 12345,
    "id_mesa_agrupamento": 5,
    "ds_nome_pessoa": "João Silva",
    "vl_telefone_pessoa": "11999887766",
    "tp_status": 0,
    "vl_total": 0,
    "dt_abertura": "2026-04-16T18:30:00",
    "itens": []
  }
}

Inserir Item POST

POST/api/neocloud/v1/comanda/{idMovimentacao}/item

Adiciona um produto à comanda informada. O item é registrado com a quantidade, valor unitário vigente e observações opcionais.

Path Parameters

ParâmetroTipoObrigatórioDescrição
idMovimentacaointegerSimID da comanda/movimentação

Request Body

CampoTipoObrigatórioDescrição
id_produtointegerSimID do produto a inserir
vl_quantidadenumberSimQuantidade do item (ex: 1, 2, 0.5)
ds_observacoesstringNãoObservações do item (ex: "sem cebola")

Respostas

200 Item inserido com sucesso
401 Token inválido
404 Comanda ou produto não encontrado
406 Comanda não está aberta ou campos obrigatórios ausentes

💡 Dica

O preço unitário é buscado automaticamente da tabela de preços vigente. Use o endpoint /api/neocloud/v1/produtopreco?id={id} para consultar o preço antes de inserir.

Requisição
curl -X POST \
  {BASE_URL}/api/neocloud/v1/comanda/12345/item \
  -H "ApplicationToken: seu-app-token" \
  -H "CompanyToken: seu-company-token" \
  -H "Content-Type: application/json" \
  -d '{
    "id_produto": 101,
    "vl_quantidade": 2,
    "ds_observacoes": "Ao ponto"
  }'
RESPOSTA
200 404 406
{
  "status": 200,
  "mensagem": "Item inserido com sucesso.",
  "objeto": {
    "id_item": 3,
    "id_movimentacao": 12345,
    "id_produto": 101,
    "ds_produto": "Picanha Completa 400g",
    "vl_unitario": 59.90,
    "vl_quantidade": 2,
    "vl_total": 119.80,
    "ds_observacoes": "Ao ponto"
  }
}

Comandas da Mesa GET

GET/api/neocloud/v1/comanda/mesa/{idMesa}

Retorna todas as comandas (pessoas) de uma mesa específica, com seus respectivos totais e status.

Path Parameters

ParâmetroTipoObrigatórioDescrição
idMesaintegerSimNúmero da mesa física
Requisição
curl -X GET \
  {BASE_URL}/api/neocloud/v1/comanda/mesa/5 \
  -H "ApplicationToken: seu-app-token" \
  -H "CompanyToken: seu-company-token"
RESPOSTA 200
{
  "status": 200,
  "mensagem": "Comandas da mesa 5 listadas.",
  "id_mesa_agrupamento": 5,
  "total_pessoas": 3,
  "comandas": [
    {
      "id_movimentacao": 12345,
      "ds_nome_pessoa": "João Silva",
      "tp_status": 0,
      "vl_total": 89.90,
      "dt_abertura": "2026-04-16T18:30:00"
    },
    {
      "id_movimentacao": 12346,
      "ds_nome_pessoa": "Maria Oliveira",
      "tp_status": 0,
      "vl_total": 42.50,
      "dt_abertura": "2026-04-16T18:31:00"
    }
  ]
}

Ver Conta GET

GET/api/neocloud/v1/comanda/{idMovimentacao}/conta

Retorna o resumo detalhado de uma comanda individual, incluindo todos os itens consumidos, quantidades e valores.

Path Parameters

ParâmetroTipoObrigatórioDescrição
idMovimentacaointegerSimID da comanda/movimentação

Status da Comanda

CódigoStatusDescrição
0AbertaComanda ativa, aceitando pedidos
2Aguardando PgtoFechamento solicitado, aguardando caixa
3FechadaPagamento concluído
Requisição
curl -X GET \
  {BASE_URL}/api/neocloud/v1/comanda/12345/conta \
  -H "ApplicationToken: seu-app-token" \
  -H "CompanyToken: seu-company-token"
RESPOSTA 200
{
  "status": 200,
  "mensagem": "Conta retornada com sucesso.",
  "objeto": {
    "id_movimentacao": 12345,
    "id_mesa_agrupamento": 5,
    "ds_nome_pessoa": "João Silva",
    "tp_status": 0,
    "vl_total": 89.90,
    "dt_abertura": "2026-04-16T18:30:00",
    "itens": [
      {
        "id_item": 1,
        "id_produto": 101,
        "ds_produto": "Picanha Completa",
        "vl_unitario": 59.90,
        "vl_quantidade": 1,
        "vl_total": 59.90,
        "ds_observacoes": "Ao ponto"
      },
      {
        "id_item": 2,
        "id_produto": 205,
        "ds_produto": "Coca-Cola 600ml",
        "vl_unitario": 10.00,
        "vl_quantidade": 3,
        "vl_total": 30.00,
        "ds_observacoes": null
      }
    ]
  }
}

Fechar Comanda POST

POST/api/neocloud/v1/comanda/{idMovimentacao}/fechar

Solicita o fechamento de uma comanda, alterando seu status para "Aguardando Pagamento" (status 2). O caixa do NeoCash será notificado automaticamente.

Path Parameters

ParâmetroTipoObrigatórioDescrição
idMovimentacaointegerSimID da comanda/movimentação

Respostas

200 Comanda enviada para fechamento
401 Token inválido
406 Comanda não está aberta (status ≠ 0)

ℹ️ Fluxo de Pagamento

O pagamento é processado no caixa do NeoCash. Esta API apenas solicita o fechamento — o caixa recebe a notificação e processa o pagamento presencialmente.

Requisição
curl -X POST \
  {BASE_URL}/api/neocloud/v1/comanda/12345/fechar \
  -H "ApplicationToken: seu-app-token" \
  -H "CompanyToken: seu-company-token"
RESPOSTA
200 406
{
  "status": 200,
  "mensagem": "Comanda 12345 enviada para fechamento (aguardando pagamento no caixa)."
}

Cancelar Item DELETE

DELETE/api/neocloud/v1/comanda/{idMovimentacao}/item/{idItem}

Remove um item da comanda e desconta seu valor do total. Válido apenas enquanto a comanda estiver aberta (status 0). Operação executada em transação — se falhar, nada é alterado.

Path Parameters

CampoTipoDescrição
idMovimentacaointegerID da comanda
idItemintegerID do item a ser removido (retornado ao inserir)

Respostas

200 Item removido com sucesso
401 Token inválido
404 Comanda ou item não encontrado
406 Comanda não está aberta
Requisição
curl -X DELETE \
  {BASE_URL}/api/neocloud/v1/comanda/12345/item/7 \
  -H "ApplicationToken: seu-app-token" \
  -H "CompanyToken: seu-company-token"
RESPOSTA
200 404 406
{
  "status": 200,
  "mensagem": "Item 7 removido da comanda 12345 com sucesso."
}

Cancelar Comanda POST

POST/api/neocloud/v1/comanda/{idMovimentacao}/cancelar

Cancela a comanda inteira, alterando seu status para Cancelada (status 4). Válido apenas se a comanda estiver aberta (0) ou aguardando pagamento (2). O cancelamento é registrado no NeoCash via sincronizador.

Path Parameters

CampoTipoDescrição
idMovimentacaointegerID da comanda a cancelar

Respostas

200 Comanda cancelada com sucesso
401 Token inválido
404 Comanda não encontrada
406 Comanda já fechada ou cancelada

⚠️ Atenção

O cancelamento não pode ser desfeito. Certifique-se de que nenhum item foi entregue antes de cancelar a comanda. Para remover apenas um produto, use DELETE /item/{idItem}.

Requisição
curl -X POST \
  {BASE_URL}/api/neocloud/v1/comanda/12345/cancelar \
  -H "ApplicationToken: seu-app-token" \
  -H "CompanyToken: seu-company-token"
RESPOSTA
200 404 406
{
  "status": 200,
  "mensagem": "Comanda 12345 cancelada com sucesso."
}

Meios de Pagamento GET

GET/api/neocloud/v1/meiodepagamento

Retorna todos os meios de pagamento aceitos pelo estabelecimento (Dinheiro, Pix, Cartão Crédito, Cartão Débito, etc.).

Respostas

200 Lista de meios retornada
401 Token inválido
Requisição
curl -X GET \
  {BASE_URL}/api/neocloud/v1/meiodepagamento \
  -H "ApplicationToken: seu-app-token" \
  -H "CompanyToken: seu-company-token"
RESPOSTA 200
[
  {
    "IdMeioDePagamento": 1,
    "DsMeioDePagamento": "Dinheiro",
    "BnAtivo": true
  },
  {
    "IdMeioDePagamento": 4,
    "DsMeioDePagamento": "Pix",
    "BnAtivo": true
  },
  {
    "IdMeioDePagamento": 2,
    "DsMeioDePagamento": "Cartão de Crédito",
    "BnAtivo": true
  },
  {
    "IdMeioDePagamento": 3,
    "DsMeioDePagamento": "Cartão de Débito",
    "BnAtivo": true
  }
]