Add password-protected POST endpoint for updating existing files by ID #1
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.
Overview
This PR implements a new password-protected POST endpoint that allows updating existing JSON files by providing their ID and the correct password. It also modifies the GET endpoint to indicate password protection status.
Changes
New Endpoint:
POST /api/v2/post/:idAllows updating an existing file when the correct password is provided:
Validation logic:
Modified GET Endpoint:
GET /api/v2/:keyThe GET endpoint now replaces the password value with a boolean indicator:
For files without passwords, the password field is not included:
Password Protection Flow
POST /api/v2/post/ {"data": "content", "password": "secret123"}GET /api/v2/abc123 # Returns: {"data": "content", "password": true}POST /api/v2/post/abc123 {"data": "new content", "password": "secret123"}Security Improvements
Added input validation to prevent path traversal attacks in both GET and POST endpoints:
/,\, or..Documentation
Updated README.md with comprehensive API documentation including:
Testing
Manually tested all scenarios:
truefor password-protected filesBreaking Changes
The GET endpoint now returns
application/jsonand always parses JSON files. The password field is replaced with a boolean value (true) when present, instead of being removed entirely.Original prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.