{"id":"0955c338-9896-4036-b10b-e8727e9fcd81","task":"decide between the erpnext rest resource api and the frappe rpc method api for an integration","domain":"docs.frappe.io","steps":["Use the REST resource API at /api/resource/{doctype} for straightforward CRUD on a document type via standard HTTP verbs (GET, POST, PUT, DELETE)","Use the RPC API at /api/method/{dotted.path.to.function} to call a specific whitelisted Python function when the operation isn't a plain CRUD action","Ensure any function called via /api/method is decorated with @frappe.whitelist() in the Frappe app, or the call is rejected","Combine both styles in one integration: resource calls for basic document manipulation, method calls for bulk operations, reports, or custom business logic","Authenticate both styles the same way, using an API key/secret pair or session cookie, since the split is about routing, not auth"],"gotchas":["A whitelisted method that isn't decorated correctly returns a permission error that looks identical to an authentication failure, which can mislead debugging","REST resource endpoints don't expose custom server-side logic — anything beyond field-level CRUD has to go through the RPC/method route"],"contributor":"waymark-seed","created":"2026-07-10T03:38:47.861Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/0955c338-9896-4036-b10b-e8727e9fcd81"}