{"openapi":"3.1.0","info":{"title":"API Arcane Cardápio","version":"1.0.0","description":"Cada chave acessa só a loja que a criou. Valores em reais."},"servers":[{"url":"https://cardapio.arcanestudios.io"}],"components":{"securitySchemes":{"chave":{"type":"http","scheme":"bearer","description":"Chave gerada no painel: Integrações > API"}}},"paths":{"/api/v1/loja":{"get":{"summary":"Dados da loja e se está aberta agora.","description":"Permissão necessária: cardapio:ler","security":[{"chave":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Chave inválida"},"403":{"description":"Sem permissão ou plano"},"429":{"description":"Limite de 120/min"}}},"patch":{"summary":"Abrir, fechar ou voltar a seguir o horário.","description":"Permissão necessária: loja:escrever","security":[{"chave":[]}],"requestBody":{"content":{"application/json":{"example":{"aberto":false}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Chave inválida"},"403":{"description":"Sem permissão ou plano"},"429":{"description":"Limite de 120/min"}}}},"/api/v1/categorias":{"get":{"summary":"Lista as categorias.","description":"Permissão necessária: cardapio:ler","security":[{"chave":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Chave inválida"},"403":{"description":"Sem permissão ou plano"},"429":{"description":"Limite de 120/min"}}},"post":{"summary":"Cria uma categoria.","description":"Permissão necessária: cardapio:escrever","security":[{"chave":[]}],"requestBody":{"content":{"application/json":{"example":{"nome":"Pizzas doces"}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Chave inválida"},"403":{"description":"Sem permissão ou plano"},"429":{"description":"Limite de 120/min"}}}},"/api/v1/produtos":{"get":{"summary":"Lista os produtos à venda.","description":"Permissão necessária: cardapio:ler","security":[{"chave":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Chave inválida"},"403":{"description":"Sem permissão ou plano"},"429":{"description":"Limite de 120/min"}}},"post":{"summary":"Cria um produto. Preço em reais.","description":"Permissão necessária: cardapio:escrever","security":[{"chave":[]}],"requestBody":{"content":{"application/json":{"example":{"nome":"Pizza de calabresa","preco":49.9,"categoria_id":"00000000-0000-0000-0000-000000000000","estoque":20}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Chave inválida"},"403":{"description":"Sem permissão ou plano"},"429":{"description":"Limite de 120/min"}}}},"/api/v1/produtos/{id}":{"get":{"summary":"Um produto.","description":"Permissão necessária: cardapio:ler","security":[{"chave":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Chave inválida"},"403":{"description":"Sem permissão ou plano"},"429":{"description":"Limite de 120/min"}}},"patch":{"summary":"Altera preço, estoque, esgotado, etiquetas…","description":"Permissão necessária: cardapio:escrever","security":[{"chave":[]}],"requestBody":{"content":{"application/json":{"example":{"preco":52.9,"esgotado":false,"estoque":15}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Chave inválida"},"403":{"description":"Sem permissão ou plano"},"429":{"description":"Limite de 120/min"}}},"delete":{"summary":"Tira o produto do cardápio.","description":"Permissão necessária: cardapio:escrever","security":[{"chave":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Chave inválida"},"403":{"description":"Sem permissão ou plano"},"429":{"description":"Limite de 120/min"}}}},"/api/v1/pedidos":{"get":{"summary":"Lista pedidos (de todos os canais: cardápio, balcão, iFood…).","description":"Permissão necessária: pedidos:ler","security":[{"chave":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Chave inválida"},"403":{"description":"Sem permissão ou plano"},"429":{"description":"Limite de 120/min"}}},"post":{"summary":"Cria um pedido. Os preços sempre vêm do cadastro.","description":"Permissão necessária: pedidos:escrever","security":[{"chave":[]}],"requestBody":{"content":{"application/json":{"example":{"nome":"Ana","telefone":"51999990000","tipo":"retirada","pagamento":"pix","itens":[{"produto_id":"00000000-0000-0000-0000-000000000000","quantidade":2,"opcoes":[]}]}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Chave inválida"},"403":{"description":"Sem permissão ou plano"},"429":{"description":"Limite de 120/min"}}}},"/api/v1/pedidos/{numero}":{"get":{"summary":"Um pedido pelo número.","description":"Permissão necessária: pedidos:ler","security":[{"chave":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Chave inválida"},"403":{"description":"Sem permissão ou plano"},"429":{"description":"Limite de 120/min"}}},"patch":{"summary":"Muda status (novo, aceito, preparo, pronto, saiu, entregue, cancelado) e/ou marca pago.","description":"Permissão necessária: pedidos:escrever","security":[{"chave":[]}],"requestBody":{"content":{"application/json":{"example":{"status":"preparo","pago":true}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Chave inválida"},"403":{"description":"Sem permissão ou plano"},"429":{"description":"Limite de 120/min"}}}},"/api/v1/clientes":{"get":{"summary":"Clientes com total gasto e último pedido.","description":"Permissão necessária: clientes:ler","security":[{"chave":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Chave inválida"},"403":{"description":"Sem permissão ou plano"},"429":{"description":"Limite de 120/min"}}}}}}