Partial update for a row, identified by source_id and remote_id.
All top-level fields are optional; only fields set to a non-None value in
the request body are applied.
Top-level fields (name, public, owner_emails,
updated_at) are NOT nullable: an explicit JSON
null is treated as "field absent" and silently ignored by the
service. This matches the convention used by UpdateDocumentRequest
and prevents callers from accidentally clearing values they meant to
leave unchanged. To unset a top-level field, callers should delete and
re-ingest the row.
The fields map (key-value row data) IS nullable per RFC 7396: keys
present in the request overwrite existing values, keys absent are
preserved, and an explicit None value deletes the key from the
row's fields map. Unknown keys, type mismatches, and deleting a
required field are rejected.