Lexware vouchers by type; JSON-RPC errors in an HTTP 200 are errors - #836
Merged
Merged
Conversation
Base automatically changed from
keysersoft/retry-after-actionable-errors
to
main
October 3, 2026 11:54
Lexware Office (on top of #831, which made voucherType/voucherStatus required): - lexware_office_get_voucher reads /vouchers/{id}. Voucher-list rows of type salesinvoice, purchaseinvoice, salescreditnote and purchasecreditnote live there; a paying user sent one to /invoices/{id} and got 404. - lexware_office_get_sales_document reads down payment invoices, order confirmations, delivery notes and dunnings. - list_vouchers: the documented filters (voucher number, created/updated dates, sort), `unchecked`, and "open already includes overdue". - create_contact sent both roles, an empty person and an address without a country on every call. It now takes the roles as given (default customer) and drops an absent address. RestEngine: Odoo's /jsonrpc and Zabbix answer errors with HTTP 200 and an `error` member. Such a body was returned as a result, logged as SUCCESS, and a connection probe passed with a wrong key. It is now raised as a JsonRpcError carrying the server's message (error.data.message or error.data), without Odoo's traceback. Production, last 30 days: 3 of 39 JSON-RPC calls logged as successes were errors.
…nection on the frontend A GET on /api_jsonrpc.php answers a JSON-RPC parse error, which the engine now raises, so Test connection points at the frontend root instead. The instructions no longer tell the model to look for errors inside a 200.
keysersoft
force-pushed
the
keysersoft/lexware-jsonrpc-errors
branch
from
October 3, 2026 11:55
e1853fc to
c5f9ad3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Was stacked on #831, which is now merged (75633af); rebased onto main.
Lexware Office (from the catalog audit, #833; a paying user hit both errors):
lexware_office_get_voucher(/vouchers/{id}): voucher-list rows of type salesinvoice / purchaseinvoice / salescreditnote / purchasecreditnote live there. The user'sget_invoice404 was a salesinvoice id sent to/invoices/{id}. Theget_invoiceid description now says which types belong where.lexware_office_get_sales_document: down payment invoices, order confirmations, delivery notes, dunnings.list_vouchers: voucher number, created/updated date ranges, sort,unchecked, and "open already includes overdue, soopen,sepadebit,transferredis everything unpaid" (the user asked foropen,overdue, which Rate limits, actionable errors, adapter fixes, onboarding nudges #831 now explains is refused).create_contact: it always sentroles: {customer, vendor}, an emptypersonnext tocompany, and a billing address[{}]without a country. Nowroles(default customer) and an optionalbillingAddressobject.create_invoiceunchanged: the user created three drafts with it successfully.RestEngine: JSON-RPC errors with HTTP 200 (
assertNotJsonRpcError): a body{jsonrpc, error}withoutresultis raised asJsonRpcErrorwith the server's message (error.data.messagefor Odoo,error.datafor Zabbix), no traceback. Before, it was returned as a result and logged as SUCCESS; the install probe passed with a wrong key. Affects zabbix and odoo-jsonrpc only (no custom connector in prod uses JSON-RPC); last 30 days: 3 of 39 such "successes" were errors.Tests: new
rest.engine.jsonrpc.spec.ts(Odoo and Zabbix shapes as logged in prod, results/batches/ordinaryerrorfields pass, and an engine round-trip against a local server); Lexware static spec pins/vouchers/{id},/{resource}/{id}and the contact body. adapters/connectors/mcp-server suites green, typecheck and lint clean.Second commit: the zabbix and odoo-jsonrpc instructions no longer tell the model to look for errors inside a 200, and Zabbix's Test connection moves from
/api_jsonrpc.php(a GET there answers a JSON-RPC parse error, now raised) to the frontend root/.