Partial update of a single location row — NOT a full-array replace. An omitted field keeps its stored value; a provided field replaces it. The core embedded fields (name, address and its sub-fields, mcc, phone) may not be set to null: a location's site facts are always concrete, so there is no "clear back to inherited" and a null is rejected with HTTP 400. bankingId is the one nullable field — send a valid account id to assign (re-validated against the merchant's banking[] exactly as create does), or null to clear the assignment. primaryLocationId is NOT settable here; it lives on the merchant PATCH, and sending it — or any other unrecognized field — returns 400 rather than being silently ignored. connectionData is the one ID-ANCHORED REPLACEMENT field: the array you send is the desired end state of the client-written entries. An entry carrying an id updates that stored entry, an entry without one is created, and ANY STORED CLIENT-WRITTEN ENTRY WHOSE ID YOU OMIT IS DELETED. Send [] to remove every client-written entry; null is rejected. An id that does not belong to this location returns HTTP 400 naming the offending id(s). Entries for Preczn-managed processors (currently AdyenForPlatforms) are outside that replacement: they are always kept, whatever array you send, and they are returned in the response. Leave them out when sending the array back — an entry naming a Preczn-managed processor returns HTTP 400, and a Preczn-managed entry's id cannot be addressed (it is reported as not found on this location).
401Unauthorized (test-mode mismatch).
403Forbidden (platform mismatch).
404Merchant not found, or location not found on this merchant.
