syncthing: use partial configuration updates - #9732
Open
khaneliman wants to merge 2 commits into
Open
Conversation
Use PATCH for general REST configuration updates so unspecified values, including the generated GUI API key, are preserved. Fixes nix-community#9659.
Route defaults settings to their documented folder, device, and ignores sub-endpoints. Use PATCH where supported and PUT for defaults/ignores.
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Description
Use PATCH for partial Syncthing GUI, LDAP, and options updates so generated values such as the API key are preserved. Route defaults through their documented sub-endpoints, using PUT only for default ignore patterns.1
Closes #9659.
Checklist
Change is backwards compatible.
Code formatted with
nix fmtornix-shell -A dev --run treefmt.Code tested through
nix build .#test-allor a targeted
nix run .#tests -- <pattern>.Test cases updated/added. See example.
Commit messages are formatted like
See CONTRIBUTING for more information and recent commit messages for examples.
If this PR adds a new module
If this PR adds an exciting new feature or contains a breaking change.
Footnotes
A more declarative alternative would fetch each current object, preserve only known Syncthing-generated fields, merge them into the declared settings, then PUT the complete object. This would reset removed settings, but requires maintaining a correct allowlist of generated fields; missing or newly added fields could be reset unintentionally. ↩