-
Notifications
You must be signed in to change notification settings - Fork 1.1k
[TT-15505] Remove negate
field as mandatory from the OAS API schema
#7284
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Knock Knock! 🔍 Just thought I'd let you know that your PR title and story title look quite different. PR titles that closely resemble the story title make it easier for reviewers to understand the context of the PR. An easy-to-understand PR title a day makes the reviewer review away! 😛⚡️
Check out this guide to learn more about PR best-practices. |
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
PR Code Suggestions ✨No code suggestions found for the PR. |
API Changes --- prev.txt 2025-08-08 06:10:30.648730902 +0000
+++ current.txt 2025-08-08 06:10:20.929583051 +0000
@@ -4746,7 +4746,7 @@
// Negate is a boolean negation operator. Setting it to true inverts the matching behaviour
// such that the rewrite will be triggered if the value does not match the `pattern` for this rule.
- Negate bool `bson:"negate" json:"negate"`
+ Negate bool `bson:"negate,omitempty" json:"negate,omitempty"`
}
URLRewriteRule represents a rewrite
matching rules. Tyk classic API definition: |
Error during chat processing: Error: Failed to get response from AI model during iteration 2. terminated Tip: Mention me again using |
🚦 Connectivity Review Snapshot
## Connectivity Assessment
## Test Coverage Validation
## Security & Performance Impact
## Summary & Recommendations
Tip: Mention me again using |
🚀 Performance Snapshot
## Performance Impact AnalysisThis change makes the ## Critical AreasThe URL rewrite middleware's core functionality is unaffected. When ## Optimization RecommendationsNo optimizations needed. The change correctly addresses the backward compatibility issue without introducing performance regressions. The ## Summary
Tip: Mention me again using |
📦 Impact Review Snapshot
## Impact AssessmentThis PR fixes a backward compatibility issue by making the
These changes restore compatibility with existing API definitions that don't have the The impact on downstream repositories is minimal since this is a backward compatibility fix that makes a previously mandatory field optional, rather than introducing new functionality. ## Required UpdatesNo immediate updates are required in downstream repositories as this change is backward compatible:
## Compatibility ConcernsThis PR actually resolves a compatibility issue rather than introducing one. By making the
The change is fully backward compatible and should not introduce any new issues. ## Summary & Recommendations
No suggestions to provide – change LGTM. Tip: Mention me again using |
Updates test data to include URL rewrite rules without the negate field to ensure backward compatibility with existing API definitions. This validates the fix that made the negate field optional in the OAS schema. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
🛡️ Security Snapshot
## Security Impact AnalysisThis PR makes the ## Identified VulnerabilitiesNo vulnerabilities were identified. The change:
## Security RecommendationsNo security-specific recommendations are necessary. The implementation correctly handles the optional field by using Go's default zero value for booleans, which provides predictable behavior when the field is omitted. ## OWASP ComplianceThis change doesn't impact OWASP compliance aspects:
## SummaryNo security issues identified – change LGTM. Tip: Mention me again using |
🚀 Performance Snapshot
## Performance Impact AnalysisThis PR makes the ## Critical AreasThe URL rewrite functionality is a critical path in request processing, but this change doesn't alter the core logic. When ## Optimization RecommendationsNo optimizations needed. The change correctly addresses the backward compatibility issue without introducing performance regressions. The default behavior (false) when the field is omitted is appropriate and maintains the expected functionality of the URL rewrite middleware. ## Summary
Tip: Mention me again using |
🚦 Connectivity Review Snapshot
## Connectivity Assessment
## Test Coverage Validation
## Security & Performance Impact
## Summary & Recommendations
Tip: Mention me again using |
📦 Impact Review Snapshot
## Impact AssessmentThis PR addresses a backward compatibility issue by making the
These changes restore compatibility with existing API definitions that don't have the The impact is minimal since this is a backward compatibility fix that makes a previously mandatory field optional, rather than introducing new functionality. ## Required UpdatesNo immediate updates are required in downstream repositories as this change is backward compatible:
## Compatibility ConcernsThis PR actually resolves a compatibility issue rather than introducing one. By making the
The change is fully backward compatible and should not introduce any new issues. ## Summary & Recommendations
No suggestions to provide – change LGTM. Tip: Mention me again using |
Performance Impact Review: URL Rewrite Schema Fix🚀 Performance Snapshot
## Performance Impact AnalysisThis PR makes the When the ## Critical AreasThe URL rewrite middleware is part of the request processing path, but this change doesn't affect its runtime behavior. The The change is well-contained to schema validation and struct serialization/deserialization, avoiding any impact on critical request processing paths. The URL rewrite functionality will maintain its current performance characteristics. ## Optimization RecommendationsNo optimizations are needed for this change. The PR correctly addresses the backward compatibility issue by making the The implementation correctly leverages Go's zero value semantics for booleans, which is an efficient approach for handling optional boolean fields. No additional runtime checks or special handling is required. ## Summary
Tip: Mention me again using |
🚦 Connectivity Review Snapshot
## Connectivity Assessment
## Test Coverage Validation
## Security & Performance Impact
## Summary & Recommendations
Tip: Mention me again using |
PR Analysis: Making
|
📦 Impact Review Snapshot
## Impact AssessmentThis PR addresses a backward compatibility issue by making the
These changes restore compatibility with existing API definitions that don't have the The impact is minimal since this is a backward compatibility fix that makes a previously mandatory field optional, rather than introducing new functionality. ## Required UpdatesNo immediate updates are required in downstream repositories as this change is backward compatible:
## Compatibility ConcernsThis PR actually resolves a compatibility issue rather than introducing one. By making the
The change is fully backward compatible and should not introduce any new issues. When the ## Summary & Recommendations
No suggestions to provide – change LGTM. Tip: Mention me again using |
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
/release to release-5.8 |
/release to release-5.9 |
/release to release-5.8.4 |
Working on it! Note that it can take a few minutes. |
/release to release-5.9.1 |
Working on it! Note that it can take a few minutes. |
1 similar comment
Working on it! Note that it can take a few minutes. |
…#7284) ### **User description** <details open> <summary><a href="https://tyktech.atlassian.net/browse/TT-15505" title="TT-15505" target="_blank">TT-15505</a></summary> <br /> <table> <tr> <th>Summary</th> <td>Fix URL Rewrite Middleware Schema breaking change introduced in 5.8.3 and 5.9.0</td> </tr> <tr> <th>Type</th> <td> <img alt="Bug" src="https://tyktech.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium" /> Bug </td> </tr> <tr> <th>Status</th> <td>In Dev</td> </tr> <tr> <th>Points</th> <td>N/A</td> </tr> <tr> <th>Labels</th> <td><a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20jira_escalated%20ORDER%20BY%20created%20DESC" title="jira_escalated">jira_escalated</a></td> </tr> </table> </details> <!-- do not remove this marker as it will break jira-lint's functionality. added_by_jira_lint --> --- <!-- Provide a general summary of your changes in the Title above --> ## Description Make negate field optional in URL rewrite schema The negate field was previously made mandatory in the OAS API schema, which broke existing API definitions that don't have the negate field defined. This prevented customers from updating their APIs. This change: - Removes negate from required fields in both OAS schema files - Adds omitempty tags to the URLRewriteRule struct to handle optional negate field - Restores backward compatibility with existing API definitions Fixes breaking change introduced in previous release where customers with API definitions lacking negate field could not update their APIs. ## Related Issue <!-- This project only accepts pull requests related to open issues. --> <!-- If suggesting a new feature or change, please discuss it in an issue first. --> <!-- If fixing a bug, there should be an issue describing it with steps to reproduce. --> <!-- OSS: Please link to the issue here. Tyk: please create/link the JIRA ticket. --> ## Motivation and Context <!-- Why is this change required? What problem does it solve? --> ## How This Has Been Tested <!-- Please describe in detail how you tested your changes --> <!-- Include details of your testing environment, and the tests --> <!-- you ran to see how your change affects other areas of the code, etc. --> <!-- This information is helpful for reviewers and QA. --> ## Screenshots (if appropriate) ## Types of changes <!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [x] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [x] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Refactoring or add test (improvements in base code or adds test coverage to functionality) ## Checklist <!-- Go over all the following points, and put an `x` in all the boxes that apply --> <!-- If there are no documentation updates required, mark the item as checked. --> <!-- Raise up any additional concerns not covered by the checklist. --> - [ ] I ensured that the documentation is up to date - [ ] I explained why this PR updates go.mod in detail with reasoning why it's required - [ ] I would like a code coverage CI quality gate exception and have explained why ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Make `negate` field optional in URL rewrite schema - Remove `negate` from required fields in OAS schema files - Add `omitempty` to `Negate` in `URLRewriteRule` struct - Restore backward compatibility for existing API definitions ___ ### Diagram Walkthrough ```mermaid flowchart LR schemaOld["OAS Schema: 'negate' required"] -- "remove from required" --> schemaNew["OAS Schema: 'negate' optional"] structOld["Go Struct: 'negate' mandatory"] -- "add omitempty" --> structNew["Go Struct: 'negate' optional"] schemaNew -- "restores compatibility" --> compatibility["Backward Compatibility"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>url_rewrite.go</strong><dd><code>Make `Negate` field optional in Go struct</code> </dd></summary> <hr> apidef/oas/url_rewrite.go <ul><li>Add <code>omitempty</code> to <code>Negate</code> field in <code>URLRewriteRule</code> struct<br> <li> Make <code>Negate</code> optional in Go struct serialization</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-7317c6061fb6488e079d733230045c7cbc1b4b2ffb98bb7da20d4025f4976e51">+1/-1</a> </td> </tr> </table></td></tr><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.json</strong><dd><code>Remove `negate` from required fields in OAS schema</code> </dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.json <ul><li>Remove <code>negate</code> from required fields in two schema definitions<br> <li> Make <code>negate</code> field optional in OAS schema</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-78828969c0c04cc1a776dfc93a8bad3c499a8c83e6169f83e96d090bed3e7dd0">+2/-4</a> </td> </tr> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.strict.json</strong><dd><code>Remove `negate` from required fields in strict OAS schema</code></dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.strict.json <ul><li>Remove <code>negate</code> from required fields in two strict schema definitions<br> <li> Make <code>negate</code> field optional in strict OAS schema</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-39a62344d6b741814a58dfd2d219665ecdf962bbec8e755dbc61e1684bb4892a">+2/-4</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: Claude <[email protected]> (cherry picked from commit 35b0c98)
Working on it! Note that it can take a few minutes. |
@lghiur Created merge PRs |
…#7284) ### **User description** <details open> <summary><a href="https://tyktech.atlassian.net/browse/TT-15505" title="TT-15505" target="_blank">TT-15505</a></summary> <br /> <table> <tr> <th>Summary</th> <td>Fix URL Rewrite Middleware Schema breaking change introduced in 5.8.3 and 5.9.0</td> </tr> <tr> <th>Type</th> <td> <img alt="Bug" src="https://tyktech.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium" /> Bug </td> </tr> <tr> <th>Status</th> <td>In Dev</td> </tr> <tr> <th>Points</th> <td>N/A</td> </tr> <tr> <th>Labels</th> <td><a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20jira_escalated%20ORDER%20BY%20created%20DESC" title="jira_escalated">jira_escalated</a></td> </tr> </table> </details> <!-- do not remove this marker as it will break jira-lint's functionality. added_by_jira_lint --> --- <!-- Provide a general summary of your changes in the Title above --> ## Description Make negate field optional in URL rewrite schema The negate field was previously made mandatory in the OAS API schema, which broke existing API definitions that don't have the negate field defined. This prevented customers from updating their APIs. This change: - Removes negate from required fields in both OAS schema files - Adds omitempty tags to the URLRewriteRule struct to handle optional negate field - Restores backward compatibility with existing API definitions Fixes breaking change introduced in previous release where customers with API definitions lacking negate field could not update their APIs. ## Related Issue <!-- This project only accepts pull requests related to open issues. --> <!-- If suggesting a new feature or change, please discuss it in an issue first. --> <!-- If fixing a bug, there should be an issue describing it with steps to reproduce. --> <!-- OSS: Please link to the issue here. Tyk: please create/link the JIRA ticket. --> ## Motivation and Context <!-- Why is this change required? What problem does it solve? --> ## How This Has Been Tested <!-- Please describe in detail how you tested your changes --> <!-- Include details of your testing environment, and the tests --> <!-- you ran to see how your change affects other areas of the code, etc. --> <!-- This information is helpful for reviewers and QA. --> ## Screenshots (if appropriate) ## Types of changes <!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [x] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [x] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Refactoring or add test (improvements in base code or adds test coverage to functionality) ## Checklist <!-- Go over all the following points, and put an `x` in all the boxes that apply --> <!-- If there are no documentation updates required, mark the item as checked. --> <!-- Raise up any additional concerns not covered by the checklist. --> - [ ] I ensured that the documentation is up to date - [ ] I explained why this PR updates go.mod in detail with reasoning why it's required - [ ] I would like a code coverage CI quality gate exception and have explained why ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Make `negate` field optional in URL rewrite schema - Remove `negate` from required fields in OAS schema files - Add `omitempty` to `Negate` in `URLRewriteRule` struct - Restore backward compatibility for existing API definitions ___ ### Diagram Walkthrough ```mermaid flowchart LR schemaOld["OAS Schema: 'negate' required"] -- "remove from required" --> schemaNew["OAS Schema: 'negate' optional"] structOld["Go Struct: 'negate' mandatory"] -- "add omitempty" --> structNew["Go Struct: 'negate' optional"] schemaNew -- "restores compatibility" --> compatibility["Backward Compatibility"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>url_rewrite.go</strong><dd><code>Make `Negate` field optional in Go struct</code> </dd></summary> <hr> apidef/oas/url_rewrite.go <ul><li>Add <code>omitempty</code> to <code>Negate</code> field in <code>URLRewriteRule</code> struct<br> <li> Make <code>Negate</code> optional in Go struct serialization</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-7317c6061fb6488e079d733230045c7cbc1b4b2ffb98bb7da20d4025f4976e51">+1/-1</a> </td> </tr> </table></td></tr><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.json</strong><dd><code>Remove `negate` from required fields in OAS schema</code> </dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.json <ul><li>Remove <code>negate</code> from required fields in two schema definitions<br> <li> Make <code>negate</code> field optional in OAS schema</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-78828969c0c04cc1a776dfc93a8bad3c499a8c83e6169f83e96d090bed3e7dd0">+2/-4</a> </td> </tr> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.strict.json</strong><dd><code>Remove `negate` from required fields in strict OAS schema</code></dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.strict.json <ul><li>Remove <code>negate</code> from required fields in two strict schema definitions<br> <li> Make <code>negate</code> field optional in strict OAS schema</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-39a62344d6b741814a58dfd2d219665ecdf962bbec8e755dbc61e1684bb4892a">+2/-4</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: Claude <[email protected]> (cherry picked from commit 35b0c98)
@lghiur Seems like there is conflict and it require manual merge. |
Still working... |
…#7284) ### **User description** <details open> <summary><a href="https://tyktech.atlassian.net/browse/TT-15505" title="TT-15505" target="_blank">TT-15505</a></summary> <br /> <table> <tr> <th>Summary</th> <td>Fix URL Rewrite Middleware Schema breaking change introduced in 5.8.3 and 5.9.0</td> </tr> <tr> <th>Type</th> <td> <img alt="Bug" src="https://tyktech.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium" /> Bug </td> </tr> <tr> <th>Status</th> <td>In Dev</td> </tr> <tr> <th>Points</th> <td>N/A</td> </tr> <tr> <th>Labels</th> <td><a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20jira_escalated%20ORDER%20BY%20created%20DESC" title="jira_escalated">jira_escalated</a></td> </tr> </table> </details> <!-- do not remove this marker as it will break jira-lint's functionality. added_by_jira_lint --> --- <!-- Provide a general summary of your changes in the Title above --> ## Description Make negate field optional in URL rewrite schema The negate field was previously made mandatory in the OAS API schema, which broke existing API definitions that don't have the negate field defined. This prevented customers from updating their APIs. This change: - Removes negate from required fields in both OAS schema files - Adds omitempty tags to the URLRewriteRule struct to handle optional negate field - Restores backward compatibility with existing API definitions Fixes breaking change introduced in previous release where customers with API definitions lacking negate field could not update their APIs. ## Related Issue <!-- This project only accepts pull requests related to open issues. --> <!-- If suggesting a new feature or change, please discuss it in an issue first. --> <!-- If fixing a bug, there should be an issue describing it with steps to reproduce. --> <!-- OSS: Please link to the issue here. Tyk: please create/link the JIRA ticket. --> ## Motivation and Context <!-- Why is this change required? What problem does it solve? --> ## How This Has Been Tested <!-- Please describe in detail how you tested your changes --> <!-- Include details of your testing environment, and the tests --> <!-- you ran to see how your change affects other areas of the code, etc. --> <!-- This information is helpful for reviewers and QA. --> ## Screenshots (if appropriate) ## Types of changes <!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [x] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [x] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Refactoring or add test (improvements in base code or adds test coverage to functionality) ## Checklist <!-- Go over all the following points, and put an `x` in all the boxes that apply --> <!-- If there are no documentation updates required, mark the item as checked. --> <!-- Raise up any additional concerns not covered by the checklist. --> - [ ] I ensured that the documentation is up to date - [ ] I explained why this PR updates go.mod in detail with reasoning why it's required - [ ] I would like a code coverage CI quality gate exception and have explained why ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Make `negate` field optional in URL rewrite schema - Remove `negate` from required fields in OAS schema files - Add `omitempty` to `Negate` in `URLRewriteRule` struct - Restore backward compatibility for existing API definitions ___ ### Diagram Walkthrough ```mermaid flowchart LR schemaOld["OAS Schema: 'negate' required"] -- "remove from required" --> schemaNew["OAS Schema: 'negate' optional"] structOld["Go Struct: 'negate' mandatory"] -- "add omitempty" --> structNew["Go Struct: 'negate' optional"] schemaNew -- "restores compatibility" --> compatibility["Backward Compatibility"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>url_rewrite.go</strong><dd><code>Make `Negate` field optional in Go struct</code> </dd></summary> <hr> apidef/oas/url_rewrite.go <ul><li>Add <code>omitempty</code> to <code>Negate</code> field in <code>URLRewriteRule</code> struct<br> <li> Make <code>Negate</code> optional in Go struct serialization</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-7317c6061fb6488e079d733230045c7cbc1b4b2ffb98bb7da20d4025f4976e51">+1/-1</a> </td> </tr> </table></td></tr><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.json</strong><dd><code>Remove `negate` from required fields in OAS schema</code> </dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.json <ul><li>Remove <code>negate</code> from required fields in two schema definitions<br> <li> Make <code>negate</code> field optional in OAS schema</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-78828969c0c04cc1a776dfc93a8bad3c499a8c83e6169f83e96d090bed3e7dd0">+2/-4</a> </td> </tr> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.strict.json</strong><dd><code>Remove `negate` from required fields in strict OAS schema</code></dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.strict.json <ul><li>Remove <code>negate</code> from required fields in two strict schema definitions<br> <li> Make <code>negate</code> field optional in strict OAS schema</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-39a62344d6b741814a58dfd2d219665ecdf962bbec8e755dbc61e1684bb4892a">+2/-4</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: Claude <[email protected]> (cherry picked from commit 35b0c98)
Still working... |
@lghiur Seems like there is conflict and it require manual merge. |
…#7284) ### **User description** <details open> <summary><a href="https://tyktech.atlassian.net/browse/TT-15505" title="TT-15505" target="_blank">TT-15505</a></summary> <br /> <table> <tr> <th>Summary</th> <td>Fix URL Rewrite Middleware Schema breaking change introduced in 5.8.3 and 5.9.0</td> </tr> <tr> <th>Type</th> <td> <img alt="Bug" src="https://tyktech.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium" /> Bug </td> </tr> <tr> <th>Status</th> <td>In Dev</td> </tr> <tr> <th>Points</th> <td>N/A</td> </tr> <tr> <th>Labels</th> <td><a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20jira_escalated%20ORDER%20BY%20created%20DESC" title="jira_escalated">jira_escalated</a></td> </tr> </table> </details> <!-- do not remove this marker as it will break jira-lint's functionality. added_by_jira_lint --> --- <!-- Provide a general summary of your changes in the Title above --> ## Description Make negate field optional in URL rewrite schema The negate field was previously made mandatory in the OAS API schema, which broke existing API definitions that don't have the negate field defined. This prevented customers from updating their APIs. This change: - Removes negate from required fields in both OAS schema files - Adds omitempty tags to the URLRewriteRule struct to handle optional negate field - Restores backward compatibility with existing API definitions Fixes breaking change introduced in previous release where customers with API definitions lacking negate field could not update their APIs. ## Related Issue <!-- This project only accepts pull requests related to open issues. --> <!-- If suggesting a new feature or change, please discuss it in an issue first. --> <!-- If fixing a bug, there should be an issue describing it with steps to reproduce. --> <!-- OSS: Please link to the issue here. Tyk: please create/link the JIRA ticket. --> ## Motivation and Context <!-- Why is this change required? What problem does it solve? --> ## How This Has Been Tested <!-- Please describe in detail how you tested your changes --> <!-- Include details of your testing environment, and the tests --> <!-- you ran to see how your change affects other areas of the code, etc. --> <!-- This information is helpful for reviewers and QA. --> ## Screenshots (if appropriate) ## Types of changes <!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [x] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [x] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Refactoring or add test (improvements in base code or adds test coverage to functionality) ## Checklist <!-- Go over all the following points, and put an `x` in all the boxes that apply --> <!-- If there are no documentation updates required, mark the item as checked. --> <!-- Raise up any additional concerns not covered by the checklist. --> - [ ] I ensured that the documentation is up to date - [ ] I explained why this PR updates go.mod in detail with reasoning why it's required - [ ] I would like a code coverage CI quality gate exception and have explained why ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Make `negate` field optional in URL rewrite schema - Remove `negate` from required fields in OAS schema files - Add `omitempty` to `Negate` in `URLRewriteRule` struct - Restore backward compatibility for existing API definitions ___ ### Diagram Walkthrough ```mermaid flowchart LR schemaOld["OAS Schema: 'negate' required"] -- "remove from required" --> schemaNew["OAS Schema: 'negate' optional"] structOld["Go Struct: 'negate' mandatory"] -- "add omitempty" --> structNew["Go Struct: 'negate' optional"] schemaNew -- "restores compatibility" --> compatibility["Backward Compatibility"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>url_rewrite.go</strong><dd><code>Make `Negate` field optional in Go struct</code> </dd></summary> <hr> apidef/oas/url_rewrite.go <ul><li>Add <code>omitempty</code> to <code>Negate</code> field in <code>URLRewriteRule</code> struct<br> <li> Make <code>Negate</code> optional in Go struct serialization</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-7317c6061fb6488e079d733230045c7cbc1b4b2ffb98bb7da20d4025f4976e51">+1/-1</a> </td> </tr> </table></td></tr><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.json</strong><dd><code>Remove `negate` from required fields in OAS schema</code> </dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.json <ul><li>Remove <code>negate</code> from required fields in two schema definitions<br> <li> Make <code>negate</code> field optional in OAS schema</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-78828969c0c04cc1a776dfc93a8bad3c499a8c83e6169f83e96d090bed3e7dd0">+2/-4</a> </td> </tr> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.strict.json</strong><dd><code>Remove `negate` from required fields in strict OAS schema</code></dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.strict.json <ul><li>Remove <code>negate</code> from required fields in two strict schema definitions<br> <li> Make <code>negate</code> field optional in strict OAS schema</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-39a62344d6b741814a58dfd2d219665ecdf962bbec8e755dbc61e1684bb4892a">+2/-4</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: Claude <[email protected]> (cherry picked from commit 35b0c98)
@lghiur Created merge PRs |
…ry from the OAS API schema (#7284) (#7287) ### **User description** [TT-15505] Remove `negate` field as mandatory from the OAS API schema (#7284) ### **User description** <details open> <summary><a href="https://tyktech.atlassian.net/browse/TT-15505" title="TT-15505" target="_blank">TT-15505</a></summary> <br /> <table> <tr> <th>Summary</th> <td>Fix URL Rewrite Middleware Schema breaking change introduced in 5.8.3 and 5.9.0</td> </tr> <tr> <th>Type</th> <td> <img alt="Bug" src="https://tyktech.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium" /> Bug </td> </tr> <tr> <th>Status</th> <td>In Dev</td> </tr> <tr> <th>Points</th> <td>N/A</td> </tr> <tr> <th>Labels</th> <td><a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20jira_escalated%20ORDER%20BY%20created%20DESC" title="jira_escalated">jira_escalated</a></td> </tr> </table> </details> <!-- do not remove this marker as it will break jira-lint's functionality. added_by_jira_lint --> --- <!-- Provide a general summary of your changes in the Title above --> ## Description Make negate field optional in URL rewrite schema The negate field was previously made mandatory in the OAS API schema, which broke existing API definitions that don't have the negate field defined. This prevented customers from updating their APIs. This change: - Removes negate from required fields in both OAS schema files - Adds omitempty tags to the URLRewriteRule struct to handle optional negate field - Restores backward compatibility with existing API definitions Fixes breaking change introduced in previous release where customers with API definitions lacking negate field could not update their APIs. ## Related Issue <!-- This project only accepts pull requests related to open issues. --> <!-- If suggesting a new feature or change, please discuss it in an issue first. --> <!-- If fixing a bug, there should be an issue describing it with steps to reproduce. --> <!-- OSS: Please link to the issue here. Tyk: please create/link the JIRA ticket. --> ## Motivation and Context <!-- Why is this change required? What problem does it solve? --> ## How This Has Been Tested <!-- Please describe in detail how you tested your changes --> <!-- Include details of your testing environment, and the tests --> <!-- you ran to see how your change affects other areas of the code, etc. --> <!-- This information is helpful for reviewers and QA. --> ## Screenshots (if appropriate) ## Types of changes <!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [x] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [x] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Refactoring or add test (improvements in base code or adds test coverage to functionality) ## Checklist <!-- Go over all the following points, and put an `x` in all the boxes that apply --> <!-- If there are no documentation updates required, mark the item as checked. --> <!-- Raise up any additional concerns not covered by the checklist. --> - [ ] I ensured that the documentation is up to date - [ ] I explained why this PR updates go.mod in detail with reasoning why it's required - [ ] I would like a code coverage CI quality gate exception and have explained why ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Make `negate` field optional in URL rewrite schema - Remove `negate` from required fields in OAS schema files - Add `omitempty` to `Negate` in `URLRewriteRule` struct - Restore backward compatibility for existing API definitions ___ ### Diagram Walkthrough ```mermaid flowchart LR schemaOld["OAS Schema: 'negate' required"] -- "remove from required" --> schemaNew["OAS Schema: 'negate' optional"] structOld["Go Struct: 'negate' mandatory"] -- "add omitempty" --> structNew["Go Struct: 'negate' optional"] schemaNew -- "restores compatibility" --> compatibility["Backward Compatibility"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>url_rewrite.go</strong><dd><code>Make `Negate` field optional in Go struct</code> </dd></summary> <hr> apidef/oas/url_rewrite.go <ul><li>Add <code>omitempty</code> to <code>Negate</code> field in <code>URLRewriteRule</code> struct<br> <li> Make <code>Negate</code> optional in Go struct serialization</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-7317c6061fb6488e079d733230045c7cbc1b4b2ffb98bb7da20d4025f4976e51">+1/-1</a> </td> </tr> </table></td></tr><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.json</strong><dd><code>Remove `negate` from required fields in OAS schema</code> </dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.json <ul><li>Remove <code>negate</code> from required fields in two schema definitions<br> <li> Make <code>negate</code> field optional in OAS schema</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-78828969c0c04cc1a776dfc93a8bad3c499a8c83e6169f83e96d090bed3e7dd0">+2/-4</a> </td> </tr> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.strict.json</strong><dd><code>Remove `negate` from required fields in strict OAS schema</code></dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.strict.json <ul><li>Remove <code>negate</code> from required fields in two strict schema definitions<br> <li> Make <code>negate</code> field optional in strict OAS schema</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-39a62344d6b741814a58dfd2d219665ecdf962bbec8e755dbc61e1684bb4892a">+2/-4</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: Claude <[email protected]> [TT-15505]: https://tyktech.atlassian.net/browse/TT-15505?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Make URL rewrite negate optional - Remove negate from OAS required - Add omitempty to Go struct field - Update tests to cover absent negate ___ ### Diagram Walkthrough ```mermaid flowchart LR schemaOld["OAS schema: negate required"] schemaNew["OAS schema: negate optional"] goOld["Go struct: negate mandatory"] goNew["Go struct: negate omitempty"] compat["Existing APIs load/update OK"] schemaOld -- "drop from required" --> schemaNew goOld -- "add omitempty" --> goNew schemaNew -- "aligns with Go" --> compat goNew -- "no field needed" --> compat ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>url_rewrite.go</strong><dd><code>Make Negate optional in URLRewriteRule struct</code> </dd></summary> <hr> apidef/oas/url_rewrite.go <ul><li>Add <code>omitempty</code> to <code>Negate</code> JSON/BSON tags<br> <li> Make <code>Negate</code> field serialization optional</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7287/files#diff-7317c6061fb6488e079d733230045c7cbc1b4b2ffb98bb7da20d4025f4976e51">+1/-1</a> </td> </tr> </table></td></tr><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.json</strong><dd><code>OAS schema: drop negate from required</code> </dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.json <ul><li>Remove <code>negate</code> from <code>required</code> in two definitions<br> <li> Keep <code>negate</code> property as boolean but optional</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7287/files#diff-78828969c0c04cc1a776dfc93a8bad3c499a8c83e6169f83e96d090bed3e7dd0">+2/-4</a> </td> </tr> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.strict.json</strong><dd><code>Strict OAS schema: make negate optional</code> </dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.strict.json <ul><li>Remove <code>negate</code> from <code>required</code> in strict schema<br> <li> Preserve additionalProperties constraints</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7287/files#diff-39a62344d6b741814a58dfd2d219665ecdf962bbec8e755dbc61e1684bb4892a">+2/-4</a> </td> </tr> </table></td></tr><tr><td><strong>Tests</strong></td><td><table> <tr> <td> <details> <summary><strong>urlRewrite-native.json</strong><dd><code>Native testdata: case without negate</code> </dd></summary> <hr> apidef/oas/testdata/urlRewrite-native.json <ul><li>Add header case without negate flag<br> <li> Ensure parsing when <code>reverse</code>/negate absent</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7287/files#diff-f9dcb0576feb87022eb01c992073ea7c4c609df5dc433d00722989adad334403">+4/-0</a> </td> </tr> <tr> <td> <details> <summary><strong>urlRewrite-oas.json</strong><dd><code>OAS testdata: rule without negate</code> </dd></summary> <hr> apidef/oas/testdata/urlRewrite-oas.json <ul><li>Add URL rewrite rule lacking <code>negate</code><br> <li> Validate optional negate in OAS example</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7287/files#diff-4993a95df56573694ea2527f0aab7989e4457066935973c497be864c7549110d">+5/-0</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ Co-authored-by: Laurentiu <[email protected]>
… from the OAS API schema (#7284) (#7285) ### **User description** [TT-15505] Remove `negate` field as mandatory from the OAS API schema (#7284) ### **User description** <details open> <summary><a href="https://tyktech.atlassian.net/browse/TT-15505" title="TT-15505" target="_blank">TT-15505</a></summary> <br /> <table> <tr> <th>Summary</th> <td>Fix URL Rewrite Middleware Schema breaking change introduced in 5.8.3 and 5.9.0</td> </tr> <tr> <th>Type</th> <td> <img alt="Bug" src="https://tyktech.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium" /> Bug </td> </tr> <tr> <th>Status</th> <td>In Dev</td> </tr> <tr> <th>Points</th> <td>N/A</td> </tr> <tr> <th>Labels</th> <td><a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20jira_escalated%20ORDER%20BY%20created%20DESC" title="jira_escalated">jira_escalated</a></td> </tr> </table> </details> <!-- do not remove this marker as it will break jira-lint's functionality. added_by_jira_lint --> --- <!-- Provide a general summary of your changes in the Title above --> ## Description Make negate field optional in URL rewrite schema The negate field was previously made mandatory in the OAS API schema, which broke existing API definitions that don't have the negate field defined. This prevented customers from updating their APIs. This change: - Removes negate from required fields in both OAS schema files - Adds omitempty tags to the URLRewriteRule struct to handle optional negate field - Restores backward compatibility with existing API definitions Fixes breaking change introduced in previous release where customers with API definitions lacking negate field could not update their APIs. ## Related Issue <!-- This project only accepts pull requests related to open issues. --> <!-- If suggesting a new feature or change, please discuss it in an issue first. --> <!-- If fixing a bug, there should be an issue describing it with steps to reproduce. --> <!-- OSS: Please link to the issue here. Tyk: please create/link the JIRA ticket. --> ## Motivation and Context <!-- Why is this change required? What problem does it solve? --> ## How This Has Been Tested <!-- Please describe in detail how you tested your changes --> <!-- Include details of your testing environment, and the tests --> <!-- you ran to see how your change affects other areas of the code, etc. --> <!-- This information is helpful for reviewers and QA. --> ## Screenshots (if appropriate) ## Types of changes <!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [x] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [x] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Refactoring or add test (improvements in base code or adds test coverage to functionality) ## Checklist <!-- Go over all the following points, and put an `x` in all the boxes that apply --> <!-- If there are no documentation updates required, mark the item as checked. --> <!-- Raise up any additional concerns not covered by the checklist. --> - [ ] I ensured that the documentation is up to date - [ ] I explained why this PR updates go.mod in detail with reasoning why it's required - [ ] I would like a code coverage CI quality gate exception and have explained why ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Make `negate` field optional in URL rewrite schema - Remove `negate` from required fields in OAS schema files - Add `omitempty` to `Negate` in `URLRewriteRule` struct - Restore backward compatibility for existing API definitions ___ ### Diagram Walkthrough ```mermaid flowchart LR schemaOld["OAS Schema: 'negate' required"] -- "remove from required" --> schemaNew["OAS Schema: 'negate' optional"] structOld["Go Struct: 'negate' mandatory"] -- "add omitempty" --> structNew["Go Struct: 'negate' optional"] schemaNew -- "restores compatibility" --> compatibility["Backward Compatibility"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>url_rewrite.go</strong><dd><code>Make `Negate` field optional in Go struct</code> </dd></summary> <hr> apidef/oas/url_rewrite.go <ul><li>Add <code>omitempty</code> to <code>Negate</code> field in <code>URLRewriteRule</code> struct<br> <li> Make <code>Negate</code> optional in Go struct serialization</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-7317c6061fb6488e079d733230045c7cbc1b4b2ffb98bb7da20d4025f4976e51">+1/-1</a> </td> </tr> </table></td></tr><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.json</strong><dd><code>Remove `negate` from required fields in OAS schema</code> </dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.json <ul><li>Remove <code>negate</code> from required fields in two schema definitions<br> <li> Make <code>negate</code> field optional in OAS schema</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-78828969c0c04cc1a776dfc93a8bad3c499a8c83e6169f83e96d090bed3e7dd0">+2/-4</a> </td> </tr> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.strict.json</strong><dd><code>Remove `negate` from required fields in strict OAS schema</code></dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.strict.json <ul><li>Remove <code>negate</code> from required fields in two strict schema definitions<br> <li> Make <code>negate</code> field optional in strict OAS schema</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-39a62344d6b741814a58dfd2d219665ecdf962bbec8e755dbc61e1684bb4892a">+2/-4</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: Claude <[email protected]> [TT-15505]: https://tyktech.atlassian.net/browse/TT-15505?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Make URL rewrite negate optional - Remove negate from OAS required lists - Add omitempty to Go struct negate - Update testdata to cover missing negate ___ ### Diagram Walkthrough ```mermaid flowchart LR schemaOld["Schema: negate required"] -->|remove from required| schemaNew["Schema: negate optional"] structOld["Go struct: negate mandatory"] -->|add omitempty| structNew["Go struct: negate optional"] tests["Testdata updates"] --> schemaNew schemaNew --> compat["Backward compatibility restored"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>url_rewrite.go</strong><dd><code>Make Negate optional in URLRewriteRule struct</code> </dd></summary> <hr> apidef/oas/url_rewrite.go <ul><li>Add <code>omitempty</code> to <code>Negate</code> JSON/BSON tags<br> <li> Make <code>Negate</code> field serialization optional</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7285/files#diff-7317c6061fb6488e079d733230045c7cbc1b4b2ffb98bb7da20d4025f4976e51">+1/-1</a> </td> </tr> </table></td></tr><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.json</strong><dd><code>OAS schema: negate removed from required</code> </dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.json <ul><li>Remove <code>negate</code> from <code>required</code> in two URL rewrite rule schemas<br> <li> Keep <code>negate</code> property as boolean but optional</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7285/files#diff-78828969c0c04cc1a776dfc93a8bad3c499a8c83e6169f83e96d090bed3e7dd0">+2/-4</a> </td> </tr> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.strict.json</strong><dd><code>Strict OAS: negate no longer required</code> </dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.strict.json <ul><li>Remove <code>negate</code> from <code>required</code> in strict schemas<br> <li> Preserve <code>additionalProperties: false</code></ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7285/files#diff-39a62344d6b741814a58dfd2d219665ecdf962bbec8e755dbc61e1684bb4892a">+2/-4</a> </td> </tr> </table></td></tr><tr><td><strong>Tests</strong></td><td><table> <tr> <td> <details> <summary><strong>urlRewrite-native.json</strong><dd><code>Native testdata: case without negate</code> </dd></summary> <hr> apidef/oas/testdata/urlRewrite-native.json <ul><li>Add header case without negate flag<br> <li> Ensure parsing when negate is absent</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7285/files#diff-f9dcb0576feb87022eb01c992073ea7c4c609df5dc433d00722989adad334403">+4/-0</a> </td> </tr> <tr> <td> <details> <summary><strong>urlRewrite-oas.json</strong><dd><code>OAS testdata: rule without negate</code> </dd></summary> <hr> apidef/oas/testdata/urlRewrite-oas.json <ul><li>Add rule omitting <code>negate</code> for header<br> <li> Validate optional negate in OAS payloads</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7285/files#diff-4993a95df56573694ea2527f0aab7989e4457066935973c497be864c7549110d">+5/-0</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ Co-authored-by: Laurentiu <[email protected]>
… from the OAS API schema (#7284) (#7286) ### **User description** [TT-15505] Remove `negate` field as mandatory from the OAS API schema (#7284) ### **User description** <details open> <summary><a href="https://tyktech.atlassian.net/browse/TT-15505" title="TT-15505" target="_blank">TT-15505</a></summary> <br /> <table> <tr> <th>Summary</th> <td>Fix URL Rewrite Middleware Schema breaking change introduced in 5.8.3 and 5.9.0</td> </tr> <tr> <th>Type</th> <td> <img alt="Bug" src="https://tyktech.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium" /> Bug </td> </tr> <tr> <th>Status</th> <td>In Dev</td> </tr> <tr> <th>Points</th> <td>N/A</td> </tr> <tr> <th>Labels</th> <td><a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20jira_escalated%20ORDER%20BY%20created%20DESC" title="jira_escalated">jira_escalated</a></td> </tr> </table> </details> <!-- do not remove this marker as it will break jira-lint's functionality. added_by_jira_lint --> --- <!-- Provide a general summary of your changes in the Title above --> ## Description Make negate field optional in URL rewrite schema The negate field was previously made mandatory in the OAS API schema, which broke existing API definitions that don't have the negate field defined. This prevented customers from updating their APIs. This change: - Removes negate from required fields in both OAS schema files - Adds omitempty tags to the URLRewriteRule struct to handle optional negate field - Restores backward compatibility with existing API definitions Fixes breaking change introduced in previous release where customers with API definitions lacking negate field could not update their APIs. ## Related Issue <!-- This project only accepts pull requests related to open issues. --> <!-- If suggesting a new feature or change, please discuss it in an issue first. --> <!-- If fixing a bug, there should be an issue describing it with steps to reproduce. --> <!-- OSS: Please link to the issue here. Tyk: please create/link the JIRA ticket. --> ## Motivation and Context <!-- Why is this change required? What problem does it solve? --> ## How This Has Been Tested <!-- Please describe in detail how you tested your changes --> <!-- Include details of your testing environment, and the tests --> <!-- you ran to see how your change affects other areas of the code, etc. --> <!-- This information is helpful for reviewers and QA. --> ## Screenshots (if appropriate) ## Types of changes <!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [x] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [x] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Refactoring or add test (improvements in base code or adds test coverage to functionality) ## Checklist <!-- Go over all the following points, and put an `x` in all the boxes that apply --> <!-- If there are no documentation updates required, mark the item as checked. --> <!-- Raise up any additional concerns not covered by the checklist. --> - [ ] I ensured that the documentation is up to date - [ ] I explained why this PR updates go.mod in detail with reasoning why it's required - [ ] I would like a code coverage CI quality gate exception and have explained why ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Make `negate` field optional in URL rewrite schema - Remove `negate` from required fields in OAS schema files - Add `omitempty` to `Negate` in `URLRewriteRule` struct - Restore backward compatibility for existing API definitions ___ ### Diagram Walkthrough ```mermaid flowchart LR schemaOld["OAS Schema: 'negate' required"] -- "remove from required" --> schemaNew["OAS Schema: 'negate' optional"] structOld["Go Struct: 'negate' mandatory"] -- "add omitempty" --> structNew["Go Struct: 'negate' optional"] schemaNew -- "restores compatibility" --> compatibility["Backward Compatibility"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>url_rewrite.go</strong><dd><code>Make `Negate` field optional in Go struct</code> </dd></summary> <hr> apidef/oas/url_rewrite.go <ul><li>Add <code>omitempty</code> to <code>Negate</code> field in <code>URLRewriteRule</code> struct<br> <li> Make <code>Negate</code> optional in Go struct serialization</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-7317c6061fb6488e079d733230045c7cbc1b4b2ffb98bb7da20d4025f4976e51">+1/-1</a> </td> </tr> </table></td></tr><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.json</strong><dd><code>Remove `negate` from required fields in OAS schema</code> </dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.json <ul><li>Remove <code>negate</code> from required fields in two schema definitions<br> <li> Make <code>negate</code> field optional in OAS schema</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-78828969c0c04cc1a776dfc93a8bad3c499a8c83e6169f83e96d090bed3e7dd0">+2/-4</a> </td> </tr> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.strict.json</strong><dd><code>Remove `negate` from required fields in strict OAS schema</code></dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.strict.json <ul><li>Remove <code>negate</code> from required fields in two strict schema definitions<br> <li> Make <code>negate</code> field optional in strict OAS schema</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-39a62344d6b741814a58dfd2d219665ecdf962bbec8e755dbc61e1684bb4892a">+2/-4</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: Claude <[email protected]> [TT-15505]: https://tyktech.atlassian.net/browse/TT-15505?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Make URL rewrite negate optional - Remove negate from OAS required fields - Add omitempty to Go struct field - Update tests to cover absent negate ___ ### Diagram Walkthrough ```mermaid flowchart LR schemaOld["OAS schemas require 'negate'"] -- "remove from required" --> schemaNew["OAS: 'negate' optional"] goOld["Go URLRewriteRule without omitempty"] -- "add omitempty" --> goNew["Go: 'negate' omitted when unset"] testsOld["Tests lacking no-negate cases"] -- "add examples" --> testsNew["Testdata includes rules without 'negate'"] schemaNew -- "unblocks updates" --> compat["Backward compatibility restored"] goNew -- "serializes correctly" --> compat ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>url_rewrite.go</strong><dd><code>Make Negate optional in URLRewriteRule struct</code> </dd></summary> <hr> apidef/oas/url_rewrite.go <ul><li>Add <code>omitempty</code> to <code>Negate</code> JSON/BSON tags<br> <li> Make <code>Negate</code> optional in serialization</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7286/files#diff-7317c6061fb6488e079d733230045c7cbc1b4b2ffb98bb7da20d4025f4976e51">+1/-1</a> </td> </tr> </table></td></tr><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.json</strong><dd><code>Relax OAS schema: negate no longer required</code> </dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.json <ul><li>Remove <code>negate</code> from <code>required</code> arrays<br> <li> Keep <code>negate</code> property as boolean, optional</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7286/files#diff-78828969c0c04cc1a776dfc93a8bad3c499a8c83e6169f83e96d090bed3e7dd0">+2/-4</a> </td> </tr> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.strict.json</strong><dd><code>Relax strict OAS schema: optional negate</code> </dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.strict.json <ul><li>Remove <code>negate</code> from strict schema <code>required</code><br> <li> Preserve property definition; make optional</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7286/files#diff-39a62344d6b741814a58dfd2d219665ecdf962bbec8e755dbc61e1684bb4892a">+2/-4</a> </td> </tr> </table></td></tr><tr><td><strong>Tests</strong></td><td><table> <tr> <td> <details> <summary><strong>urlRewrite-native.json</strong><dd><code>Testdata: header rule without negate flag</code> </dd></summary> <hr> apidef/oas/testdata/urlRewrite-native.json <ul><li>Add header match case without negate<br> <li> Ensure coverage for default negate behavior</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7286/files#diff-f9dcb0576feb87022eb01c992073ea7c4c609df5dc433d00722989adad334403">+4/-0</a> </td> </tr> <tr> <td> <details> <summary><strong>urlRewrite-oas.json</strong><dd><code>Testdata: OAS rule without negate property</code> </dd></summary> <hr> apidef/oas/testdata/urlRewrite-oas.json <ul><li>Add URL rewrite rule lacking <code>negate</code><br> <li> Validate schema accepts omitted negate</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7286/files#diff-4993a95df56573694ea2527f0aab7989e4457066935973c497be864c7549110d">+5/-0</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ Co-authored-by: Laurentiu <[email protected]>
…ry from the OAS API schema (#7284) (#7288) ### **User description** [TT-15505] Remove `negate` field as mandatory from the OAS API schema (#7284) ### **User description** <details open> <summary><a href="https://tyktech.atlassian.net/browse/TT-15505" title="TT-15505" target="_blank">TT-15505</a></summary> <br /> <table> <tr> <th>Summary</th> <td>Fix URL Rewrite Middleware Schema breaking change introduced in 5.8.3 and 5.9.0</td> </tr> <tr> <th>Type</th> <td> <img alt="Bug" src="https://tyktech.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium" /> Bug </td> </tr> <tr> <th>Status</th> <td>In Dev</td> </tr> <tr> <th>Points</th> <td>N/A</td> </tr> <tr> <th>Labels</th> <td><a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20jira_escalated%20ORDER%20BY%20created%20DESC" title="jira_escalated">jira_escalated</a></td> </tr> </table> </details> <!-- do not remove this marker as it will break jira-lint's functionality. added_by_jira_lint --> --- <!-- Provide a general summary of your changes in the Title above --> ## Description Make negate field optional in URL rewrite schema The negate field was previously made mandatory in the OAS API schema, which broke existing API definitions that don't have the negate field defined. This prevented customers from updating their APIs. This change: - Removes negate from required fields in both OAS schema files - Adds omitempty tags to the URLRewriteRule struct to handle optional negate field - Restores backward compatibility with existing API definitions Fixes breaking change introduced in previous release where customers with API definitions lacking negate field could not update their APIs. ## Related Issue <!-- This project only accepts pull requests related to open issues. --> <!-- If suggesting a new feature or change, please discuss it in an issue first. --> <!-- If fixing a bug, there should be an issue describing it with steps to reproduce. --> <!-- OSS: Please link to the issue here. Tyk: please create/link the JIRA ticket. --> ## Motivation and Context <!-- Why is this change required? What problem does it solve? --> ## How This Has Been Tested <!-- Please describe in detail how you tested your changes --> <!-- Include details of your testing environment, and the tests --> <!-- you ran to see how your change affects other areas of the code, etc. --> <!-- This information is helpful for reviewers and QA. --> ## Screenshots (if appropriate) ## Types of changes <!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [x] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [x] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Refactoring or add test (improvements in base code or adds test coverage to functionality) ## Checklist <!-- Go over all the following points, and put an `x` in all the boxes that apply --> <!-- If there are no documentation updates required, mark the item as checked. --> <!-- Raise up any additional concerns not covered by the checklist. --> - [ ] I ensured that the documentation is up to date - [ ] I explained why this PR updates go.mod in detail with reasoning why it's required - [ ] I would like a code coverage CI quality gate exception and have explained why ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Make `negate` field optional in URL rewrite schema - Remove `negate` from required fields in OAS schema files - Add `omitempty` to `Negate` in `URLRewriteRule` struct - Restore backward compatibility for existing API definitions ___ ### Diagram Walkthrough ```mermaid flowchart LR schemaOld["OAS Schema: 'negate' required"] -- "remove from required" --> schemaNew["OAS Schema: 'negate' optional"] structOld["Go Struct: 'negate' mandatory"] -- "add omitempty" --> structNew["Go Struct: 'negate' optional"] schemaNew -- "restores compatibility" --> compatibility["Backward Compatibility"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>url_rewrite.go</strong><dd><code>Make `Negate` field optional in Go struct</code> </dd></summary> <hr> apidef/oas/url_rewrite.go <ul><li>Add <code>omitempty</code> to <code>Negate</code> field in <code>URLRewriteRule</code> struct<br> <li> Make <code>Negate</code> optional in Go struct serialization</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-7317c6061fb6488e079d733230045c7cbc1b4b2ffb98bb7da20d4025f4976e51">+1/-1</a> </td> </tr> </table></td></tr><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.json</strong><dd><code>Remove `negate` from required fields in OAS schema</code> </dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.json <ul><li>Remove <code>negate</code> from required fields in two schema definitions<br> <li> Make <code>negate</code> field optional in OAS schema</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-78828969c0c04cc1a776dfc93a8bad3c499a8c83e6169f83e96d090bed3e7dd0">+2/-4</a> </td> </tr> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.strict.json</strong><dd><code>Remove `negate` from required fields in strict OAS schema</code></dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.strict.json <ul><li>Remove <code>negate</code> from required fields in two strict schema definitions<br> <li> Make <code>negate</code> field optional in strict OAS schema</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7284/files#diff-39a62344d6b741814a58dfd2d219665ecdf962bbec8e755dbc61e1684bb4892a">+2/-4</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: Claude <[email protected]> [TT-15505]: https://tyktech.atlassian.net/browse/TT-15505?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Make URL rewrite negate optional - Remove negate from OAS required lists - Add omitempty to Go struct field - Update testdata to cover optional negate ___ ### Diagram Walkthrough ```mermaid flowchart LR schemaOld["OAS schemas require negate"] -- "remove from required" --> schemaNew["OAS schemas: negate optional"] goOld["Go URLRewriteRule requires negate"] -- "add omitempty" --> goNew["Go struct: negate optional"] testsOld["Tests lacked optional cases"] -- "add samples" --> testsNew["Testdata includes rules w/o negate"] schemaNew -- "aligns with struct" --> goNew ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>url_rewrite.go</strong><dd><code>Make Negate optional in Go URLRewriteRule</code> </dd></summary> <hr> apidef/oas/url_rewrite.go <ul><li>Add json/bson <code>omitempty</code> to <code>Negate</code><br> <li> Make <code>Negate</code> serialization optional</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7288/files#diff-7317c6061fb6488e079d733230045c7cbc1b4b2ffb98bb7da20d4025f4976e51">+1/-1</a> </td> </tr> </table></td></tr><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.json</strong><dd><code>OAS schema: negate no longer required</code> </dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.json <ul><li>Remove <code>negate</code> from required in two defs<br> <li> Keep <code>negate</code> property as boolean, optional</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7288/files#diff-78828969c0c04cc1a776dfc93a8bad3c499a8c83e6169f83e96d090bed3e7dd0">+2/-4</a> </td> </tr> <tr> <td> <details> <summary><strong>x-tyk-api-gateway.strict.json</strong><dd><code>Strict OAS: make negate optional</code> </dd></summary> <hr> apidef/oas/schema/x-tyk-api-gateway.strict.json <ul><li>Remove <code>negate</code> from required in two strict defs<br> <li> Preserve additionalProperties constraints</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7288/files#diff-39a62344d6b741814a58dfd2d219665ecdf962bbec8e755dbc61e1684bb4892a">+2/-4</a> </td> </tr> </table></td></tr><tr><td><strong>Tests</strong></td><td><table> <tr> <td> <details> <summary><strong>urlRewrite-native.json</strong><dd><code>Testdata: native example without negate</code> </dd></summary> <hr> apidef/oas/testdata/urlRewrite-native.json <ul><li>Add header match example without negate<br> <li> Ensure both true/false reverse cases present</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7288/files#diff-f9dcb0576feb87022eb01c992073ea7c4c609df5dc433d00722989adad334403">+4/-0</a> </td> </tr> <tr> <td> <details> <summary><strong>urlRewrite-oas.json</strong><dd><code>Testdata: OAS rule without negate</code> </dd></summary> <hr> apidef/oas/testdata/urlRewrite-oas.json <ul><li>Add rule lacking <code>negate</code> field<br> <li> Cover header rule with only pattern/name</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7288/files#diff-4993a95df56573694ea2527f0aab7989e4457066935973c497be864c7549110d">+5/-0</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ Co-authored-by: Laurentiu <[email protected]>
User description
TT-15505
Description
Make negate field optional in URL rewrite schema
The negate field was previously made mandatory in the OAS API schema, which broke existing API definitions that don't have the negate field defined. This prevented customers from updating their APIs.
This change:
negate field
Fixes breaking change introduced in previous release where customers with API definitions lacking negate field could not update their APIs.
Related Issue
Motivation and Context
How This Has Been Tested
Screenshots (if appropriate)
Types of changes
Checklist
PR Type
Bug fix, Enhancement
Description
Make
negate
field optional in URL rewrite schemaRemove
negate
from required fields in OAS schema filesAdd
omitempty
toNegate
inURLRewriteRule
structRestore backward compatibility for existing API definitions
Diagram Walkthrough
File Walkthrough
url_rewrite.go
Make `Negate` field optional in Go struct
apidef/oas/url_rewrite.go
omitempty
toNegate
field inURLRewriteRule
structNegate
optional in Go struct serializationx-tyk-api-gateway.json
Remove `negate` from required fields in OAS schema
apidef/oas/schema/x-tyk-api-gateway.json
negate
from required fields in two schema definitionsnegate
field optional in OAS schemax-tyk-api-gateway.strict.json
Remove `negate` from required fields in strict OAS schema
apidef/oas/schema/x-tyk-api-gateway.strict.json
negate
from required fields in two strict schema definitionsnegate
field optional in strict OAS schema