qa-skills 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +168 -0
- package/bin/cli.js +42 -0
- package/dist/agents/registry.d.ts +5 -0
- package/dist/agents/registry.d.ts.map +1 -0
- package/dist/agents/registry.js +101 -0
- package/dist/agents/registry.js.map +1 -0
- package/dist/agents/types.d.ts +9 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +2 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/dependencies.d.ts +21 -0
- package/dist/dependencies.d.ts.map +1 -0
- package/dist/dependencies.js +125 -0
- package/dist/dependencies.js.map +1 -0
- package/dist/installer.d.ts +25 -0
- package/dist/installer.d.ts.map +1 -0
- package/dist/installer.js +437 -0
- package/dist/installer.js.map +1 -0
- package/dist/scaffold.d.ts +27 -0
- package/dist/scaffold.d.ts.map +1 -0
- package/dist/scaffold.js +182 -0
- package/dist/scaffold.js.map +1 -0
- package/package.json +40 -0
- package/skills/qa-accessibility-test-writer/SKILL.md +127 -0
- package/skills/qa-accessibility-test-writer/references/axe-core-patterns.md +349 -0
- package/skills/qa-accessibility-test-writer/references/best-practices.md +184 -0
- package/skills/qa-accessibility-test-writer/references/wcag-tests.md +331 -0
- package/skills/qa-api-contract-curator/SKILL.md +104 -0
- package/skills/qa-api-contract-curator/references/breaking-changes.md +363 -0
- package/skills/qa-api-contract-curator/references/openapi-structure.md +404 -0
- package/skills/qa-browser-data-collector/SKILL.md +132 -0
- package/skills/qa-browser-data-collector/references/data-collection-checklist.md +91 -0
- package/skills/qa-browser-data-collector/references/playwright-mcp-patterns.md +113 -0
- package/skills/qa-bug-ticket-creator/SKILL.md +148 -0
- package/skills/qa-bug-ticket-creator/references/bug-report-format.md +149 -0
- package/skills/qa-bug-ticket-creator/references/severity-guide.md +81 -0
- package/skills/qa-bug-ticket-creator/templates/bug-ticket-template.md +39 -0
- package/skills/qa-changelog-analyzer/SKILL.md +134 -0
- package/skills/qa-changelog-analyzer/references/git-analysis-patterns.md +138 -0
- package/skills/qa-changelog-analyzer/references/impact-mapping.md +120 -0
- package/skills/qa-clickup-integration/SKILL.md +166 -0
- package/skills/qa-clickup-integration/references/api-patterns.md +102 -0
- package/skills/qa-clickup-integration/references/field-mapping.md +71 -0
- package/skills/qa-codeceptjs-writer/SKILL.md +136 -0
- package/skills/qa-codeceptjs-writer/references/best-practices.md +207 -0
- package/skills/qa-codeceptjs-writer/references/config.md +255 -0
- package/skills/qa-codeceptjs-writer/references/patterns.md +285 -0
- package/skills/qa-coverage-analyzer/SKILL.md +166 -0
- package/skills/qa-coverage-analyzer/references/best-practices.md +142 -0
- package/skills/qa-coverage-analyzer/references/coverage-dimensions.md +155 -0
- package/skills/qa-coverage-analyzer/references/tools.md +204 -0
- package/skills/qa-cypress-writer/SKILL.md +134 -0
- package/skills/qa-cypress-writer/references/assertions.md +121 -0
- package/skills/qa-cypress-writer/references/best-practices.md +82 -0
- package/skills/qa-cypress-writer/references/config.md +121 -0
- package/skills/qa-cypress-writer/references/patterns.md +170 -0
- package/skills/qa-data-factory/SKILL.md +126 -0
- package/skills/qa-data-factory/references/factory-patterns.md +164 -0
- package/skills/qa-data-factory/references/faker-guide.md +131 -0
- package/skills/qa-diagram-generator/SKILL.md +125 -0
- package/skills/qa-diagram-generator/references/c4-model.md +53 -0
- package/skills/qa-diagram-generator/references/charts.md +58 -0
- package/skills/qa-diagram-generator/references/class-diagram.md +85 -0
- package/skills/qa-diagram-generator/references/er-diagram.md +69 -0
- package/skills/qa-diagram-generator/references/flowchart.md +92 -0
- package/skills/qa-diagram-generator/references/from-screenshot.md +45 -0
- package/skills/qa-diagram-generator/references/gantt.md +49 -0
- package/skills/qa-diagram-generator/references/journey.md +50 -0
- package/skills/qa-diagram-generator/references/mindmap.md +75 -0
- package/skills/qa-diagram-generator/references/sequence.md +69 -0
- package/skills/qa-diagram-generator/references/state-diagram.md +56 -0
- package/skills/qa-discovery-interview/SKILL.md +182 -0
- package/skills/qa-discovery-interview/references/completeness-checklist.md +53 -0
- package/skills/qa-discovery-interview/references/conflict-patterns.md +101 -0
- package/skills/qa-discovery-interview/references/qa-categories.md +147 -0
- package/skills/qa-discovery-interview/templates/qa-brief-template.md +168 -0
- package/skills/qa-environment-checker/SKILL.md +142 -0
- package/skills/qa-environment-checker/references/dependency-matrix.md +101 -0
- package/skills/qa-environment-checker/references/health-checks.md +209 -0
- package/skills/qa-environment-checker/templates/env-readiness-template.md +64 -0
- package/skills/qa-flaky-detector/SKILL.md +153 -0
- package/skills/qa-flaky-detector/references/ci-analysis.md +140 -0
- package/skills/qa-flaky-detector/references/flaky-patterns.md +247 -0
- package/skills/qa-github-issues-enhanced/SKILL.md +175 -0
- package/skills/qa-github-issues-enhanced/references/issue-templates.md +425 -0
- package/skills/qa-github-issues-enhanced/references/label-taxonomy.md +130 -0
- package/skills/qa-github-issues-enhanced/references/workflow-patterns.md +188 -0
- package/skills/qa-httpx-writer/SKILL.md +138 -0
- package/skills/qa-httpx-writer/references/assertions.md +195 -0
- package/skills/qa-httpx-writer/references/best-practices.md +140 -0
- package/skills/qa-httpx-writer/references/config.md +212 -0
- package/skills/qa-httpx-writer/references/patterns.md +262 -0
- package/skills/qa-jest-writer/SKILL.md +131 -0
- package/skills/qa-jest-writer/references/assertions.md +125 -0
- package/skills/qa-jest-writer/references/best-practices.md +136 -0
- package/skills/qa-jest-writer/references/config.md +134 -0
- package/skills/qa-jest-writer/references/patterns.md +172 -0
- package/skills/qa-jira-integration/SKILL.md +135 -0
- package/skills/qa-jira-integration/references/api-patterns.md +143 -0
- package/skills/qa-jira-integration/references/field-mapping.md +79 -0
- package/skills/qa-jira-integration/references/xray-integration.md +85 -0
- package/skills/qa-jmeter-writer/SKILL.md +171 -0
- package/skills/qa-jmeter-writer/references/best-practices.md +157 -0
- package/skills/qa-jmeter-writer/references/config.md +204 -0
- package/skills/qa-jmeter-writer/references/patterns.md +242 -0
- package/skills/qa-junit5-writer/SKILL.md +157 -0
- package/skills/qa-junit5-writer/references/assertions.md +118 -0
- package/skills/qa-junit5-writer/references/config.md +97 -0
- package/skills/qa-junit5-writer/references/patterns.md +162 -0
- package/skills/qa-k6-writer/SKILL.md +155 -0
- package/skills/qa-k6-writer/references/best-practices.md +236 -0
- package/skills/qa-k6-writer/references/config.md +219 -0
- package/skills/qa-k6-writer/references/patterns.md +304 -0
- package/skills/qa-linear-integration/SKILL.md +137 -0
- package/skills/qa-linear-integration/references/api-patterns.md +249 -0
- package/skills/qa-linear-integration/references/field-mapping.md +121 -0
- package/skills/qa-locust-writer/SKILL.md +151 -0
- package/skills/qa-locust-writer/references/best-practices.md +126 -0
- package/skills/qa-locust-writer/references/config.md +170 -0
- package/skills/qa-locust-writer/references/patterns.md +235 -0
- package/skills/qa-manual-test-designer/SKILL.md +145 -0
- package/skills/qa-manual-test-designer/references/exploratory-charters.md +138 -0
- package/skills/qa-manual-test-designer/references/personas.md +146 -0
- package/skills/qa-manual-test-designer/templates/exploratory-charter-template.md +47 -0
- package/skills/qa-manual-test-designer/templates/test-case-template.md +31 -0
- package/skills/qa-mobile-test-writer/SKILL.md +144 -0
- package/skills/qa-mobile-test-writer/references/best-practices.md +214 -0
- package/skills/qa-mobile-test-writer/references/config.md +309 -0
- package/skills/qa-mobile-test-writer/references/patterns.md +304 -0
- package/skills/qa-nfr-analyst/SKILL.md +177 -0
- package/skills/qa-nfr-analyst/references/iso-25010-model.md +159 -0
- package/skills/qa-nfr-analyst/references/owasp-wstg-baseline.md +202 -0
- package/skills/qa-nfr-analyst/references/wcag-checklist.md +184 -0
- package/skills/qa-nfr-analyst/templates/owasp-checklist-template.md +89 -0
- package/skills/qa-nfr-analyst/templates/wcag-checklist-template.md +48 -0
- package/skills/qa-orchestrator/SKILL.md +132 -0
- package/skills/qa-orchestrator/references/handoff-chains.md +105 -0
- package/skills/qa-orchestrator/references/pipeline-modes.md +115 -0
- package/skills/qa-orchestrator/references/scheduler-rules.md +84 -0
- package/skills/qa-pact-writer/SKILL.md +133 -0
- package/skills/qa-pact-writer/references/best-practices.md +100 -0
- package/skills/qa-pact-writer/references/config.md +135 -0
- package/skills/qa-pact-writer/references/patterns.md +161 -0
- package/skills/qa-plan-creator/SKILL.md +139 -0
- package/skills/qa-plan-creator/references/introduction-plan.md +43 -0
- package/skills/qa-plan-creator/references/migration-plan.md +44 -0
- package/skills/qa-plan-creator/references/onboarding-plan.md +46 -0
- package/skills/qa-plan-creator/references/performance-plan.md +44 -0
- package/skills/qa-plan-creator/references/regression-plan.md +45 -0
- package/skills/qa-plan-creator/references/release-plan.md +45 -0
- package/skills/qa-plan-creator/references/sprint-plan.md +44 -0
- package/skills/qa-plan-creator/references/test-plan.md +59 -0
- package/skills/qa-plan-creator/references/uat-plan.md +43 -0
- package/skills/qa-plan-creator/templates/checklist-template.md +36 -0
- package/skills/qa-plan-creator/templates/regression-checklist-template.md +49 -0
- package/skills/qa-plan-creator/templates/release-checklist-template.md +46 -0
- package/skills/qa-plan-creator/templates/test-plan-template.md +74 -0
- package/skills/qa-playwright-py-writer/SKILL.md +156 -0
- package/skills/qa-playwright-py-writer/references/best-practices.md +194 -0
- package/skills/qa-playwright-py-writer/references/config.md +195 -0
- package/skills/qa-playwright-py-writer/references/patterns.md +212 -0
- package/skills/qa-playwright-ts-writer/SKILL.md +151 -0
- package/skills/qa-playwright-ts-writer/references/assertions.md +109 -0
- package/skills/qa-playwright-ts-writer/references/best-practices.md +191 -0
- package/skills/qa-playwright-ts-writer/references/config.md +144 -0
- package/skills/qa-playwright-ts-writer/references/patterns.md +171 -0
- package/skills/qa-pytest-writer/SKILL.md +145 -0
- package/skills/qa-pytest-writer/references/assertions.md +149 -0
- package/skills/qa-pytest-writer/references/best-practices.md +97 -0
- package/skills/qa-pytest-writer/references/config.md +176 -0
- package/skills/qa-pytest-writer/references/patterns.md +251 -0
- package/skills/qa-qase-integration/SKILL.md +149 -0
- package/skills/qa-qase-integration/references/api-reference.md +354 -0
- package/skills/qa-qase-integration/references/ci-integration.md +196 -0
- package/skills/qa-qase-integration/references/field-mapping.md +157 -0
- package/skills/qa-requirements-generator/SKILL.md +152 -0
- package/skills/qa-requirements-generator/references/iso-29148-structure.md +153 -0
- package/skills/qa-requirements-generator/references/requirement-patterns.md +278 -0
- package/skills/qa-rest-assured-writer/SKILL.md +137 -0
- package/skills/qa-rest-assured-writer/references/best-practices.md +50 -0
- package/skills/qa-rest-assured-writer/references/config.md +124 -0
- package/skills/qa-rest-assured-writer/references/patterns.md +192 -0
- package/skills/qa-risk-analyzer/SKILL.md +158 -0
- package/skills/qa-risk-analyzer/references/impact-analysis.md +133 -0
- package/skills/qa-risk-analyzer/references/risk-factors.md +123 -0
- package/skills/qa-robot-framework-writer/SKILL.md +147 -0
- package/skills/qa-robot-framework-writer/references/best-practices.md +249 -0
- package/skills/qa-robot-framework-writer/references/config.md +204 -0
- package/skills/qa-robot-framework-writer/references/libraries.md +273 -0
- package/skills/qa-robot-framework-writer/references/patterns.md +216 -0
- package/skills/qa-security-test-writer/SKILL.md +123 -0
- package/skills/qa-security-test-writer/references/best-practices.md +155 -0
- package/skills/qa-security-test-writer/references/owasp-top10.md +331 -0
- package/skills/qa-security-test-writer/references/zap-config.md +258 -0
- package/skills/qa-selenium-java-writer/SKILL.md +143 -0
- package/skills/qa-selenium-java-writer/references/best-practices.md +59 -0
- package/skills/qa-selenium-java-writer/references/config.md +143 -0
- package/skills/qa-selenium-java-writer/references/patterns.md +170 -0
- package/skills/qa-selenium-py-writer/SKILL.md +150 -0
- package/skills/qa-selenium-py-writer/references/best-practices.md +175 -0
- package/skills/qa-selenium-py-writer/references/config.md +224 -0
- package/skills/qa-selenium-py-writer/references/patterns.md +255 -0
- package/skills/qa-shortcut-integration/SKILL.md +143 -0
- package/skills/qa-shortcut-integration/references/api-patterns.md +126 -0
- package/skills/qa-shortcut-integration/references/field-mapping.md +66 -0
- package/skills/qa-spec-auditor/SKILL.md +162 -0
- package/skills/qa-spec-auditor/references/audit-checklist.md +144 -0
- package/skills/qa-spec-auditor/references/drift-patterns.md +207 -0
- package/skills/qa-spec-writer/SKILL.md +143 -0
- package/skills/qa-spec-writer/references/gherkin-guide.md +253 -0
- package/skills/qa-spec-writer/references/specification-patterns.md +274 -0
- package/skills/qa-spring-test-writer/SKILL.md +170 -0
- package/skills/qa-spring-test-writer/references/best-practices.md +57 -0
- package/skills/qa-spring-test-writer/references/config.md +179 -0
- package/skills/qa-spring-test-writer/references/patterns.md +235 -0
- package/skills/qa-supertest-writer/SKILL.md +150 -0
- package/skills/qa-supertest-writer/references/assertions.md +192 -0
- package/skills/qa-supertest-writer/references/best-practices.md +102 -0
- package/skills/qa-supertest-writer/references/config.md +166 -0
- package/skills/qa-supertest-writer/references/patterns.md +242 -0
- package/skills/qa-task-creator/SKILL.md +142 -0
- package/skills/qa-task-creator/references/linking-patterns.md +127 -0
- package/skills/qa-task-creator/references/task-types.md +169 -0
- package/skills/qa-task-creator/templates/task-template.md +24 -0
- package/skills/qa-test-doc-compiler/SKILL.md +114 -0
- package/skills/qa-test-doc-compiler/references/agile-tailoring.md +220 -0
- package/skills/qa-test-doc-compiler/references/iso-29119-3-documents.md +302 -0
- package/skills/qa-test-healer/SKILL.md +101 -0
- package/skills/qa-test-healer/references/diagnosis-patterns.md +142 -0
- package/skills/qa-test-healer/references/fix-strategies.md +177 -0
- package/skills/qa-test-reporter/SKILL.md +130 -0
- package/skills/qa-test-reporter/references/best-practices.md +162 -0
- package/skills/qa-test-reporter/references/iso-29119-reports.md +236 -0
- package/skills/qa-test-reporter/references/report-formats.md +287 -0
- package/skills/qa-test-reviewer/SKILL.md +142 -0
- package/skills/qa-test-reviewer/references/anti-patterns.md +268 -0
- package/skills/qa-test-reviewer/references/review-checklist.md +93 -0
- package/skills/qa-test-strategy/SKILL.md +133 -0
- package/skills/qa-test-strategy/references/entry-exit-criteria.md +176 -0
- package/skills/qa-test-strategy/references/risk-matrix.md +102 -0
- package/skills/qa-test-strategy/references/testing-types.md +143 -0
- package/skills/qa-testcase-from-docs/SKILL.md +161 -0
- package/skills/qa-testcase-from-docs/references/test-case-format.md +196 -0
- package/skills/qa-testcase-from-docs/references/test-design-techniques.md +126 -0
- package/skills/qa-testcase-from-docs/templates/test-case-template.md +31 -0
- package/skills/qa-testcase-from-ui/SKILL.md +109 -0
- package/skills/qa-testcase-from-ui/references/ui-element-patterns.md +126 -0
- package/skills/qa-testcase-from-ui/references/visual-analysis-guide.md +146 -0
- package/skills/qa-testcase-from-ui/templates/test-case-template.md +31 -0
- package/skills/qa-visual-regression-writer/SKILL.md +175 -0
- package/skills/qa-visual-regression-writer/references/best-practices.md +154 -0
- package/skills/qa-visual-regression-writer/references/config.md +220 -0
- package/skills/qa-visual-regression-writer/references/patterns.md +213 -0
- package/skills/qa-vitest-writer/SKILL.md +141 -0
- package/skills/qa-vitest-writer/references/assertions.md +105 -0
- package/skills/qa-vitest-writer/references/best-practices.md +62 -0
- package/skills/qa-vitest-writer/references/config.md +127 -0
- package/skills/qa-vitest-writer/references/patterns.md +141 -0
- package/skills/qa-webdriverio-writer/SKILL.md +145 -0
- package/skills/qa-webdriverio-writer/references/best-practices.md +176 -0
- package/skills/qa-webdriverio-writer/references/config.md +240 -0
- package/skills/qa-webdriverio-writer/references/patterns.md +269 -0
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
# API Breaking Changes Catalog
|
|
2
|
+
|
|
3
|
+
Catalog of API changes that break backward compatibility. Use when comparing API versions and generating breaking change reports.
|
|
4
|
+
|
|
5
|
+
## Severity Levels
|
|
6
|
+
|
|
7
|
+
| Severity | Description |
|
|
8
|
+
| -------- | ----------- |
|
|
9
|
+
| **Breaking** | Clients will fail without code changes |
|
|
10
|
+
| **Potentially Breaking** | May break depending on client implementation |
|
|
11
|
+
| **Additive** | Safe; no client changes required |
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 1. Endpoint Changes
|
|
16
|
+
|
|
17
|
+
### 1.1 Removed Endpoint
|
|
18
|
+
|
|
19
|
+
**Change:** Path or HTTP method no longer exists.
|
|
20
|
+
|
|
21
|
+
**Example:**
|
|
22
|
+
- Before: `GET /api/v1/users/{id}`
|
|
23
|
+
- After: Endpoint removed
|
|
24
|
+
|
|
25
|
+
**Impact:** Clients calling this endpoint will receive 404.
|
|
26
|
+
|
|
27
|
+
**Mitigation:**
|
|
28
|
+
- Deprecate first; keep endpoint for at least one major version
|
|
29
|
+
- Document migration path (e.g., use `GET /api/v2/users/{id}`)
|
|
30
|
+
- Return 410 Gone with migration hint
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
### 1.2 Renamed Path
|
|
35
|
+
|
|
36
|
+
**Change:** Path changed without preserving old path.
|
|
37
|
+
|
|
38
|
+
**Example:**
|
|
39
|
+
- Before: `GET /api/users`
|
|
40
|
+
- After: `GET /api/v2/customers`
|
|
41
|
+
|
|
42
|
+
**Impact:** Breaking — old path returns 404.
|
|
43
|
+
|
|
44
|
+
**Mitigation:**
|
|
45
|
+
- Keep old path as alias, redirect (301/308) to new path
|
|
46
|
+
- Or deprecate old path with clear timeline
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
### 1.3 Changed HTTP Method
|
|
51
|
+
|
|
52
|
+
**Change:** Same path now uses different method (e.g., POST → PUT).
|
|
53
|
+
|
|
54
|
+
**Example:**
|
|
55
|
+
- Before: `POST /api/orders` (create)
|
|
56
|
+
- After: `PUT /api/orders` (create or replace)
|
|
57
|
+
|
|
58
|
+
**Impact:** Breaking — clients using POST will fail.
|
|
59
|
+
|
|
60
|
+
**Mitigation:**
|
|
61
|
+
- Support both during transition
|
|
62
|
+
- Document method change in release notes
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 2. Request Schema Changes
|
|
67
|
+
|
|
68
|
+
### 2.1 New Required Field
|
|
69
|
+
|
|
70
|
+
**Change:** Request body schema gains a new required field.
|
|
71
|
+
|
|
72
|
+
**Example:**
|
|
73
|
+
- Before: `{ "email": "..." }`
|
|
74
|
+
- After: `{ "email": "...", "tenantId": "..." }` (tenantId required)
|
|
75
|
+
|
|
76
|
+
**Impact:** Breaking — clients not sending `tenantId` will receive 400.
|
|
77
|
+
|
|
78
|
+
**Mitigation:**
|
|
79
|
+
- Add field as optional first; make required in next major version
|
|
80
|
+
- Provide default value if business logic allows
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
### 2.2 Removed Optional Field
|
|
85
|
+
|
|
86
|
+
**Change:** Optional field removed from request schema.
|
|
87
|
+
|
|
88
|
+
**Example:**
|
|
89
|
+
- Before: `{ "email": "...", "legacyId": "..." }`
|
|
90
|
+
- After: `{ "email": "..." }` (legacyId removed)
|
|
91
|
+
|
|
92
|
+
**Impact:** Potentially breaking — clients sending `legacyId` may get 400 if server rejects unknown fields.
|
|
93
|
+
|
|
94
|
+
**Mitigation:**
|
|
95
|
+
- Ignore unknown fields (allow `additionalProperties`)
|
|
96
|
+
- Or deprecate field first, remove later
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
### 2.3 Type Change
|
|
101
|
+
|
|
102
|
+
**Change:** Field type changed (e.g., string → number, string → array).
|
|
103
|
+
|
|
104
|
+
**Example:**
|
|
105
|
+
- Before: `"tags": "a,b,c"` (string)
|
|
106
|
+
- After: `"tags": ["a", "b", "c"]` (array)
|
|
107
|
+
|
|
108
|
+
**Impact:** Breaking — clients sending string will fail validation.
|
|
109
|
+
|
|
110
|
+
**Mitigation:**
|
|
111
|
+
- Accept both formats during transition
|
|
112
|
+
- Document migration in changelog
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
### 2.4 Enum Restriction
|
|
117
|
+
|
|
118
|
+
**Change:** Field that was free-form is now an enum; or enum values removed.
|
|
119
|
+
|
|
120
|
+
**Example:**
|
|
121
|
+
- Before: `"status": "any string"`
|
|
122
|
+
- After: `"status": "pending" | "active" | "closed"`
|
|
123
|
+
|
|
124
|
+
**Impact:** Breaking — clients sending other values get 400.
|
|
125
|
+
|
|
126
|
+
**Mitigation:**
|
|
127
|
+
- Add new enum values gradually; avoid removing values
|
|
128
|
+
- If removing: deprecate first, return clear error with migration hint
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## 3. Response Schema Changes
|
|
133
|
+
|
|
134
|
+
### 3.1 Removed Response Field
|
|
135
|
+
|
|
136
|
+
**Change:** Field removed from response body.
|
|
137
|
+
|
|
138
|
+
**Example:**
|
|
139
|
+
- Before: `{ "id": "...", "legacyCode": "..." }`
|
|
140
|
+
- After: `{ "id": "..." }`
|
|
141
|
+
|
|
142
|
+
**Impact:** Breaking — clients depending on `legacyCode` will fail.
|
|
143
|
+
|
|
144
|
+
**Mitigation:**
|
|
145
|
+
- Deprecate field (keep in response but document removal timeline)
|
|
146
|
+
- Or add replacement field first, then remove old one
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
### 3.2 New Required Field in Response
|
|
151
|
+
|
|
152
|
+
**Change:** Response schema gains a new required field.
|
|
153
|
+
|
|
154
|
+
**Example:**
|
|
155
|
+
- Before: `{ "id": "...", "name": "..." }`
|
|
156
|
+
- After: `{ "id": "...", "name": "...", "tenantId": "..." }` (tenantId required)
|
|
157
|
+
|
|
158
|
+
**Impact:** Breaking — old clients may not handle new field; strict parsers could fail.
|
|
159
|
+
|
|
160
|
+
**Mitigation:**
|
|
161
|
+
- Add as optional first
|
|
162
|
+
- Ensure clients tolerate unknown fields
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
### 3.3 Type Change in Response
|
|
167
|
+
|
|
168
|
+
**Change:** Response field type changed.
|
|
169
|
+
|
|
170
|
+
**Example:**
|
|
171
|
+
- Before: `"count": 42` (number)
|
|
172
|
+
- After: `"count": "42"` (string)
|
|
173
|
+
|
|
174
|
+
**Impact:** Breaking — clients expecting number will fail.
|
|
175
|
+
|
|
176
|
+
**Mitigation:**
|
|
177
|
+
- Avoid type changes; use new field name if necessary
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
### 3.4 Renamed Field
|
|
182
|
+
|
|
183
|
+
**Change:** Field name changed in response.
|
|
184
|
+
|
|
185
|
+
**Example:**
|
|
186
|
+
- Before: `"user_id"`
|
|
187
|
+
- After: `"userId"`
|
|
188
|
+
|
|
189
|
+
**Impact:** Breaking — clients using old name will fail.
|
|
190
|
+
|
|
191
|
+
**Mitigation:**
|
|
192
|
+
- Return both names during transition
|
|
193
|
+
- Document in deprecation notice
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## 4. Parameter Changes
|
|
198
|
+
|
|
199
|
+
### 4.1 Removed Query/Header Parameter
|
|
200
|
+
|
|
201
|
+
**Change:** Parameter no longer accepted.
|
|
202
|
+
|
|
203
|
+
**Example:**
|
|
204
|
+
- Before: `GET /users?legacyFilter=...`
|
|
205
|
+
- After: Parameter ignored or 400
|
|
206
|
+
|
|
207
|
+
**Impact:** Breaking if server rejects; additive if ignored.
|
|
208
|
+
|
|
209
|
+
**Mitigation:**
|
|
210
|
+
- Ignore unknown parameters
|
|
211
|
+
- Or deprecate with timeline
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
### 4.2 New Required Parameter
|
|
216
|
+
|
|
217
|
+
**Change:** Path, query, or header parameter now required.
|
|
218
|
+
|
|
219
|
+
**Example:**
|
|
220
|
+
- Before: `GET /users` (optional `tenantId`)
|
|
221
|
+
- After: `GET /users` (required `X-Tenant-ID` header)
|
|
222
|
+
|
|
223
|
+
**Impact:** Breaking — clients not sending it get 400.
|
|
224
|
+
|
|
225
|
+
**Mitigation:**
|
|
226
|
+
- Introduce as optional; make required in major version
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
### 4.3 Parameter Type or Enum Change
|
|
231
|
+
|
|
232
|
+
**Change:** Parameter type or allowed values changed.
|
|
233
|
+
|
|
234
|
+
**Example:**
|
|
235
|
+
- Before: `?page=1` (integer)
|
|
236
|
+
- After: `?page=1` (string "1" required)
|
|
237
|
+
|
|
238
|
+
**Impact:** Breaking — depends on client validation.
|
|
239
|
+
|
|
240
|
+
**Mitigation:**
|
|
241
|
+
- Accept both formats during transition
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## 5. Authentication & Authorization
|
|
246
|
+
|
|
247
|
+
### 5.1 New Authentication Required
|
|
248
|
+
|
|
249
|
+
**Change:** Endpoint was public; now requires auth.
|
|
250
|
+
|
|
251
|
+
**Example:**
|
|
252
|
+
- Before: `GET /public/data` (no auth)
|
|
253
|
+
- After: `GET /public/data` (Bearer token required)
|
|
254
|
+
|
|
255
|
+
**Impact:** Breaking — unauthenticated clients get 401.
|
|
256
|
+
|
|
257
|
+
**Mitigation:**
|
|
258
|
+
- Introduce new authenticated path; deprecate public path
|
|
259
|
+
- Or announce timeline for requiring auth
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
### 5.2 Changed Auth Scheme
|
|
264
|
+
|
|
265
|
+
**Change:** API key → OAuth2, or different header name.
|
|
266
|
+
|
|
267
|
+
**Example:**
|
|
268
|
+
- Before: `X-API-Key: xxx`
|
|
269
|
+
- After: `Authorization: Bearer xxx`
|
|
270
|
+
|
|
271
|
+
**Impact:** Breaking — clients using old scheme get 401.
|
|
272
|
+
|
|
273
|
+
**Mitigation:**
|
|
274
|
+
- Support both during transition
|
|
275
|
+
- Document migration steps
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
### 5.3 Scope/Permission Change
|
|
280
|
+
|
|
281
|
+
**Change:** Same endpoint now requires different scope or role.
|
|
282
|
+
|
|
283
|
+
**Example:**
|
|
284
|
+
- Before: `read` scope
|
|
285
|
+
- After: `read:users` scope required
|
|
286
|
+
|
|
287
|
+
**Impact:** Breaking — clients with old scope get 403.
|
|
288
|
+
|
|
289
|
+
**Mitigation:**
|
|
290
|
+
- Expand scope gradually; avoid restricting without notice
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## 6. Status Code Changes
|
|
295
|
+
|
|
296
|
+
### 6.1 Success Code Change
|
|
297
|
+
|
|
298
|
+
**Change:** 200 → 201, or 201 → 200 for same operation.
|
|
299
|
+
|
|
300
|
+
**Example:**
|
|
301
|
+
- Before: `POST /users` → 200 OK
|
|
302
|
+
- After: `POST /users` → 201 Created
|
|
303
|
+
|
|
304
|
+
**Impact:** Potentially breaking — clients checking for 200 may fail.
|
|
305
|
+
|
|
306
|
+
**Mitigation:**
|
|
307
|
+
- Prefer 201 for creation; document change
|
|
308
|
+
- Clients should accept 2xx range when possible
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
### 6.2 Error Code Change
|
|
313
|
+
|
|
314
|
+
**Change:** 400 → 422, 404 → 410, etc.
|
|
315
|
+
|
|
316
|
+
**Example:**
|
|
317
|
+
- Before: Invalid input → 400
|
|
318
|
+
- After: Invalid input → 422 Unprocessable Entity
|
|
319
|
+
|
|
320
|
+
**Impact:** Potentially breaking — clients handling 400 specifically may miss new code.
|
|
321
|
+
|
|
322
|
+
**Mitigation:**
|
|
323
|
+
- Document all error responses in OpenAPI
|
|
324
|
+
- Clients should handle error body, not just status code
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
### 6.3 Removed Status Code
|
|
329
|
+
|
|
330
|
+
**Change:** Response that was documented no longer returned.
|
|
331
|
+
|
|
332
|
+
**Example:**
|
|
333
|
+
- Before: 202 Accepted for async processing
|
|
334
|
+
- After: 200 OK (now synchronous)
|
|
335
|
+
|
|
336
|
+
**Impact:** Breaking — clients expecting 202 may misinterpret 200.
|
|
337
|
+
|
|
338
|
+
**Mitigation:**
|
|
339
|
+
- Document behavior change clearly
|
|
340
|
+
- Consider keeping 202 with same semantics if possible
|
|
341
|
+
|
|
342
|
+
---
|
|
343
|
+
|
|
344
|
+
## 7. Additive (Non-Breaking) Changes
|
|
345
|
+
|
|
346
|
+
| Change | Example |
|
|
347
|
+
| ------ | ------- |
|
|
348
|
+
| New optional request field | `"metadata": {}` added, optional |
|
|
349
|
+
| New optional response field | `"etag": "..."` added to response |
|
|
350
|
+
| New endpoint | `GET /api/v2/reports` added |
|
|
351
|
+
| New optional parameter | `?includeArchived=true` added |
|
|
352
|
+
| New enum value | `"status": "archived"` added to enum |
|
|
353
|
+
| New optional header | `X-Request-ID` supported |
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## Versioning Strategy Recommendations
|
|
358
|
+
|
|
359
|
+
1. **Semantic versioning:** Major.Minor.Patch — breaking = major bump
|
|
360
|
+
2. **URL versioning:** `/v1/`, `/v2/` — keep v1 until deprecated
|
|
361
|
+
3. **Deprecation window:** Minimum 6–12 months for breaking changes
|
|
362
|
+
4. **Changelog:** Document every change with migration notes
|
|
363
|
+
5. **Sunset headers:** `Sunset: Sat, 01 Jan 2026 00:00:00 GMT` for deprecated endpoints
|