{"openapi":"3.1.0","info":{"title":"WAY NF API","version":"1.0.0","description":"Emissão, consulta e cancelamento de NFS-e Nacional (Sefin Nacional). Documentação: /docs/api"},"servers":[{"url":"https://way-nf.vercel.app","description":"WAY NF"}],"security":[{"chave":[]}],"components":{"securitySchemes":{"chave":{"type":"http","scheme":"bearer","description":"Chave criada no painel (Integrações): wnf_test_… ou wnf_live_…"}},"schemas":{"Erro":{"type":"object","required":["code","message","correlation_id"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"correlation_id":{"type":"string"}}},"NovoPedido":{"type":"object","required":["external_id","competence","service_amount","payload"],"properties":{"external_id":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$","description":"Seu identificador (ex.: id da cobrança). Único por chave."},"competence":{"type":"string","format":"date","description":"Data de competência AAAA-MM-DD."},"service_amount":{"type":"string","pattern":"^\\d{1,16}\\.\\d{2}$","example":"150.00"},"payload":{"type":"object","required":["taker","service"],"properties":{"taker":{"type":"object","required":["name","tax_id"],"properties":{"name":{"type":"string"},"tax_id":{"type":"string","description":"CPF (11) ou CNPJ (14), só dígitos."},"email":{"type":"string","format":"email"}}},"service":{"type":"object","required":["description"],"properties":{"description":{"type":"string","maxLength":2000}}}}}}},"Pedido":{"type":"object","properties":{"id":{"type":"string"},"external_id":{"type":"string"},"status":{"type":"string","enum":["accepted","queued","processing","issued","rejected","uncertain","cancelled"]},"access_key":{"type":"string","description":"Chave de acesso da NFS-e (50 dígitos), quando emitida."},"dps_number":{"type":"string"},"issued_at":{"type":"string","format":"date-time"},"message":{"type":"string","description":"Motivo de recusa, bloqueio ou incerteza."},"cancellation":{"type":"string","enum":["requested"]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"correlation_id":{"type":"string"}}},"Webhook":{"type":"object","description":"Corpo enviado ao seu endereço. Headers: X-Way-NF-Event-ID, X-Way-NF-Timestamp (ms), X-Way-NF-Signature = HMAC-SHA256(segredo, timestamp + '.' + corpo) em hex.","properties":{"id":{"type":"string"},"schema_version":{"type":"string","const":"1"},"request_id":{"type":"string"},"data":{"type":"object","properties":{"event":{"type":"string","enum":["request.issued","request.rejected","request.uncertain","request.cancelled","request.cancellation_rejected","webhook.test"]},"external_id":{"type":"string"},"status":{"type":"string"},"environment":{"type":"string","enum":["test","production"]},"access_key":{"type":"string"},"dps_number":{"type":"string"},"issued_at":{"type":"string"},"message":{"type":"string"}}}}}}},"paths":{"/v1/requests":{"post":{"summary":"Emitir nota","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$"},"description":"Repetir a mesma chave com o mesmo corpo devolve o mesmo pedido."},{"name":"X-Company-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Só se a chave cobrir mais de uma empresa."},{"name":"X-Fiscal-Environment","in":"header","required":false,"schema":{"type":"string","enum":["RESTRICTED","PRODUCTION"]},"description":"Só se a chave cobrir mais de um ambiente. wnf_test_ = RESTRICTED, wnf_live_ = PRODUCTION."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NovoPedido"}}}},"responses":{"202":{"description":"Pedido aceito (queued) ou já processado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Pedido"}}}},"400":{"description":"Requisição inválida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave inválida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Idempotency-Key reutilizada com dados diferentes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Dados recusados","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"Limite de 60 chamadas/minuto","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"503":{"description":"Indisponível","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}},"get":{"summary":"Listar pedidos","parameters":[{"name":"external_id","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"X-Company-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Só se a chave cobrir mais de uma empresa."},{"name":"X-Fiscal-Environment","in":"header","required":false,"schema":{"type":"string","enum":["RESTRICTED","PRODUCTION"]},"description":"Só se a chave cobrir mais de um ambiente. wnf_test_ = RESTRICTED, wnf_live_ = PRODUCTION."}],"responses":{"200":{"description":"Página de pedidos","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Pedido"}},"next_cursor":{"type":["string","null"]}}}}}},"400":{"description":"Requisição inválida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave inválida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Idempotency-Key reutilizada com dados diferentes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Dados recusados","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"Limite de 60 chamadas/minuto","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"503":{"description":"Indisponível","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/v1/requests/{id}":{"get":{"summary":"Consultar pedido","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Company-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Só se a chave cobrir mais de uma empresa."},{"name":"X-Fiscal-Environment","in":"header","required":false,"schema":{"type":"string","enum":["RESTRICTED","PRODUCTION"]},"description":"Só se a chave cobrir mais de um ambiente. wnf_test_ = RESTRICTED, wnf_live_ = PRODUCTION."}],"responses":{"200":{"description":"Pedido","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Pedido"}}}},"400":{"description":"Requisição inválida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave inválida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Idempotency-Key reutilizada com dados diferentes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Dados recusados","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"Limite de 60 chamadas/minuto","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"503":{"description":"Indisponível","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/v1/requests/{id}/cancel":{"post":{"summary":"Cancelar nota emitida","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Company-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Só se a chave cobrir mais de uma empresa."},{"name":"X-Fiscal-Environment","in":"header","required":false,"schema":{"type":"string","enum":["RESTRICTED","PRODUCTION"]},"description":"Só se a chave cobrir mais de um ambiente. wnf_test_ = RESTRICTED, wnf_live_ = PRODUCTION."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["reason_code","reason"],"properties":{"reason_code":{"type":"integer","enum":[1,2,9],"description":"1 erro na emissão, 2 serviço não prestado, 9 outros"},"reason":{"type":"string","minLength":15,"maxLength":255}}}}}},"responses":{"202":{"description":"Cancelamento pedido","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Pedido"}}}},"400":{"description":"Requisição inválida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave inválida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Idempotency-Key reutilizada com dados diferentes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Dados recusados","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"Limite de 60 chamadas/minuto","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"503":{"description":"Indisponível","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}},"/v1/requests/{id}/xml":{"get":{"summary":"Baixar XML","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"type","in":"query","schema":{"type":"string","enum":["nfse","dps","cancellation"],"default":"nfse"}},{"name":"X-Company-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Só se a chave cobrir mais de uma empresa."},{"name":"X-Fiscal-Environment","in":"header","required":false,"schema":{"type":"string","enum":["RESTRICTED","PRODUCTION"]},"description":"Só se a chave cobrir mais de um ambiente. wnf_test_ = RESTRICTED, wnf_live_ = PRODUCTION."}],"responses":{"200":{"description":"XML oficial","content":{"application/xml":{}}},"400":{"description":"Requisição inválida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"Chave inválida","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"Sem permissão","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"Idempotency-Key reutilizada com dados diferentes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"Dados recusados","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"Limite de 60 chamadas/minuto","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"503":{"description":"Indisponível","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}}}}}}