x-readiness-mcp 0.3.0 → 0.5.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 +325 -0
- package/USAGE_GUIDE.md +271 -0
- package/package.json +2 -2
- package/server.js +103 -213
- package/tools/autofix.js +151 -0
- package/tools/execution.js +193 -814
- package/tools/gitignore-helper.js +88 -0
- package/tools/planning.js +120 -333
- package/tools/rule-checkers.js +394 -0
- package/tools/template-parser.js +204 -0
- package/templates/master_template.json +0 -524
|
@@ -1,524 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "Siemens X API Readiness",
|
|
3
|
-
"version": "2.5.0",
|
|
4
|
-
"last_updated": "2026-01-28",
|
|
5
|
-
"description": "Master template for X-API readiness validation based on Siemens API Guidelines",
|
|
6
|
-
|
|
7
|
-
"sources": [
|
|
8
|
-
{
|
|
9
|
-
"id": "common-index",
|
|
10
|
-
"area": "common",
|
|
11
|
-
"name": "Common API Guidelines - Overview",
|
|
12
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/common/index.html",
|
|
13
|
-
"priority": "medium"
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
"id": "common-api-lifecycle-phases",
|
|
17
|
-
"area": "common",
|
|
18
|
-
"name": "API Lifecycle Phases",
|
|
19
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/common/api-lifecycle-phases.html",
|
|
20
|
-
"priority": "medium"
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"id": "common-api-specification",
|
|
24
|
-
"area": "common",
|
|
25
|
-
"name": "API Specification",
|
|
26
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/common/api-specification.html",
|
|
27
|
-
"priority": "high"
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"id": "common-api-documentation",
|
|
31
|
-
"area": "common",
|
|
32
|
-
"name": "API Documentation",
|
|
33
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/common/api-documentation.html",
|
|
34
|
-
"priority": "medium"
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
"id": "common-api-versioning",
|
|
38
|
-
"area": "common",
|
|
39
|
-
"name": "API Versioning",
|
|
40
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/common/api-versioning.html",
|
|
41
|
-
"priority": "high"
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
"id": "common-json-property-naming",
|
|
45
|
-
"area": "common",
|
|
46
|
-
"name": "JSON Property Naming",
|
|
47
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/common/json-property-naming.html",
|
|
48
|
-
"priority": "medium"
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
"id": "common-http-api-protection",
|
|
52
|
-
"area": "common",
|
|
53
|
-
"name": "HTTP API Protection",
|
|
54
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/common/http-api-protection.html",
|
|
55
|
-
"priority": "critical"
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
"id": "common-changelog",
|
|
59
|
-
"area": "common",
|
|
60
|
-
"name": "Common Guidelines Changelog",
|
|
61
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/common/changelog.html",
|
|
62
|
-
"priority": "low"
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
"id": "rest-index",
|
|
66
|
-
"area": "rest",
|
|
67
|
-
"name": "REST API Guidelines - Overview",
|
|
68
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/rest/index.html",
|
|
69
|
-
"priority": "medium"
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
"id": "rest-media-type",
|
|
73
|
-
"area": "rest",
|
|
74
|
-
"name": "Media Types",
|
|
75
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/rest/media-type.html",
|
|
76
|
-
"priority": "high"
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
"id": "rest-versioning",
|
|
80
|
-
"area": "rest",
|
|
81
|
-
"name": "REST Versioning",
|
|
82
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/rest/versioning.html",
|
|
83
|
-
"priority": "high"
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
"id": "rest-error",
|
|
87
|
-
"area": "rest",
|
|
88
|
-
"name": "Error Handling",
|
|
89
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/rest/error.html",
|
|
90
|
-
"priority": "critical"
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
"id": "rest-common-operations",
|
|
94
|
-
"area": "rest",
|
|
95
|
-
"name": "Common Operations",
|
|
96
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/rest/common-operations.html",
|
|
97
|
-
"priority": "high"
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
"id": "rest-bulk-operations",
|
|
101
|
-
"area": "rest",
|
|
102
|
-
"name": "Bulk Operations",
|
|
103
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/rest/bulk-operations.html",
|
|
104
|
-
"priority": "medium"
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
"id": "rest-sparse-fieldsets",
|
|
108
|
-
"area": "rest",
|
|
109
|
-
"name": "Sparse Fieldsets",
|
|
110
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/rest/sparse-fieldsets.html",
|
|
111
|
-
"priority": "medium"
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
"id": "rest-filtering",
|
|
115
|
-
"area": "rest",
|
|
116
|
-
"name": "Filtering",
|
|
117
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/rest/filtering.html",
|
|
118
|
-
"priority": "medium"
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
"id": "rest-pagination",
|
|
122
|
-
"area": "rest",
|
|
123
|
-
"name": "Pagination",
|
|
124
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/rest/pagination.html",
|
|
125
|
-
"priority": "high"
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
"id": "rest-sorting",
|
|
129
|
-
"area": "rest",
|
|
130
|
-
"name": "Sorting",
|
|
131
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/rest/sorting.html",
|
|
132
|
-
"priority": "medium"
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
"id": "rest-security",
|
|
136
|
-
"area": "rest",
|
|
137
|
-
"name": "Security",
|
|
138
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/rest/security.html",
|
|
139
|
-
"priority": "critical"
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
"id": "rest-best-practices",
|
|
143
|
-
"area": "rest",
|
|
144
|
-
"name": "Best Practices",
|
|
145
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/rest/best-practices.html",
|
|
146
|
-
"priority": "medium"
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
"id": "rest-tools",
|
|
150
|
-
"area": "rest",
|
|
151
|
-
"name": "Tools",
|
|
152
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/rest/tools.html",
|
|
153
|
-
"priority": "low"
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
"id": "rest-appendix-datatypes",
|
|
157
|
-
"area": "rest",
|
|
158
|
-
"name": "Appendix: Data Types",
|
|
159
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/rest/appendix-datatypes.html",
|
|
160
|
-
"priority": "low"
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
"id": "rest-changelog",
|
|
164
|
-
"area": "rest",
|
|
165
|
-
"name": "REST Guidelines Changelog",
|
|
166
|
-
"url": "https://developer.siemens.com/guidelines/api-guidelines/rest/changelog.html",
|
|
167
|
-
"priority": "low"
|
|
168
|
-
}
|
|
169
|
-
],
|
|
170
|
-
|
|
171
|
-
"scopes": {
|
|
172
|
-
"x_api_readiness": {
|
|
173
|
-
"description": "Full X-API readiness check covering all common and REST guidelines",
|
|
174
|
-
"include_ids": ["common-*", "rest-*"]
|
|
175
|
-
},
|
|
176
|
-
"pagination_ready": {
|
|
177
|
-
"description": "Pagination readiness including related query operations",
|
|
178
|
-
"include_ids": [
|
|
179
|
-
"rest-pagination",
|
|
180
|
-
"rest-sorting",
|
|
181
|
-
"rest-filtering",
|
|
182
|
-
"rest-sparse-fieldsets",
|
|
183
|
-
"rest-common-operations",
|
|
184
|
-
"rest-error",
|
|
185
|
-
"rest-security",
|
|
186
|
-
"common-json-property-naming"
|
|
187
|
-
]
|
|
188
|
-
},
|
|
189
|
-
"security_ready": {
|
|
190
|
-
"description": "Security readiness for API protection",
|
|
191
|
-
"include_ids": [
|
|
192
|
-
"rest-security",
|
|
193
|
-
"common-http-api-protection",
|
|
194
|
-
"rest-error"
|
|
195
|
-
]
|
|
196
|
-
},
|
|
197
|
-
"error_handling_ready": {
|
|
198
|
-
"description": "Error handling and status code compliance",
|
|
199
|
-
"include_ids": [
|
|
200
|
-
"rest-error",
|
|
201
|
-
"rest-media-type",
|
|
202
|
-
"common-json-property-naming"
|
|
203
|
-
]
|
|
204
|
-
},
|
|
205
|
-
"versioning_ready": {
|
|
206
|
-
"description": "API versioning compliance",
|
|
207
|
-
"include_ids": [
|
|
208
|
-
"common-api-versioning",
|
|
209
|
-
"rest-versioning",
|
|
210
|
-
"rest-media-type"
|
|
211
|
-
]
|
|
212
|
-
},
|
|
213
|
-
"media_types_ready": {
|
|
214
|
-
"description": "Media types and naming conventions",
|
|
215
|
-
"include_ids": [
|
|
216
|
-
"rest-media-type",
|
|
217
|
-
"common-json-property-naming"
|
|
218
|
-
]
|
|
219
|
-
},
|
|
220
|
-
"operations_ready": {
|
|
221
|
-
"description": "CRUD and bulk operations compliance",
|
|
222
|
-
"include_ids": [
|
|
223
|
-
"rest-common-operations",
|
|
224
|
-
"rest-bulk-operations",
|
|
225
|
-
"rest-error"
|
|
226
|
-
]
|
|
227
|
-
},
|
|
228
|
-
"query_ready": {
|
|
229
|
-
"description": "Query capabilities: filtering, sorting, sparse fieldsets",
|
|
230
|
-
"include_ids": [
|
|
231
|
-
"rest-filtering",
|
|
232
|
-
"rest-sorting",
|
|
233
|
-
"rest-sparse-fieldsets",
|
|
234
|
-
"rest-pagination"
|
|
235
|
-
]
|
|
236
|
-
}
|
|
237
|
-
},
|
|
238
|
-
|
|
239
|
-
"categories": {
|
|
240
|
-
"PAGINATION": {
|
|
241
|
-
"id": "pagination",
|
|
242
|
-
"name": "Pagination",
|
|
243
|
-
"description": "Rules for implementing pagination in collection endpoints",
|
|
244
|
-
"guideline_url": "https://developer.siemens.com/guidelines/api-guidelines/rest/pagination.html",
|
|
245
|
-
"rule_id_range": "600-699",
|
|
246
|
-
"applies_to": ["GET endpoints", "Collection responses"],
|
|
247
|
-
"keywords": ["pagination", "paging", "offset", "limit", "cursor", "page", "size", "next", "prev", "first", "last"],
|
|
248
|
-
"related_categories": ["MEDIA_TYPES"],
|
|
249
|
-
"priority": "high",
|
|
250
|
-
"expected_rules": {
|
|
251
|
-
"600": "Pagination links",
|
|
252
|
-
"601": "Pagination strategies",
|
|
253
|
-
"601.1": "Cursor based strategy",
|
|
254
|
-
"601.1.1": "Server MAY provide pagination meta information",
|
|
255
|
-
"601.2": "Offset based strategy",
|
|
256
|
-
"601.2.1": "Offset pagination meta information",
|
|
257
|
-
"601.3": "Index based strategy",
|
|
258
|
-
"601.3.1": "Index pagination meta information"
|
|
259
|
-
}
|
|
260
|
-
},
|
|
261
|
-
"ERROR_HANDLING": {
|
|
262
|
-
"id": "error-handling",
|
|
263
|
-
"name": "Error Handling",
|
|
264
|
-
"description": "Rules for consistent and secure error response handling",
|
|
265
|
-
"guideline_url": "https://developer.siemens.com/guidelines/api-guidelines/rest/error.html",
|
|
266
|
-
"rule_id_range": "300-399",
|
|
267
|
-
"applies_to": ["Error responses", "HTTP status codes", "Error objects"],
|
|
268
|
-
"keywords": ["error", "error handling", "status code", "4xx", "5xx", "errors object", "error reporting"],
|
|
269
|
-
"related_categories": ["MEDIA_TYPES", "SECURITY"],
|
|
270
|
-
"priority": "critical",
|
|
271
|
-
"expected_rules": {
|
|
272
|
-
"300": "API MUST use official HTTP status codes as intended",
|
|
273
|
-
"301": "API SHOULD only use most common HTTP status codes",
|
|
274
|
-
"301.3": "Client Error 4xx Status Codes",
|
|
275
|
-
"301.4": "Server Error 5xx Status Codes",
|
|
276
|
-
"302": "API SHOULD use most specific HTTP status code for error",
|
|
277
|
-
"303": "API SHOULD not expose stack traces of the error",
|
|
278
|
-
"304": "API SHOULD report problems with an errors object",
|
|
279
|
-
"305": "Error object SHOULD be represented according to defined structure",
|
|
280
|
-
"305.1": "The values of the code field SHOULD be unique",
|
|
281
|
-
"305.2": "All error codes SHOULD be documented",
|
|
282
|
-
"305.3": "The values of title and detail fields SHOULD be in English"
|
|
283
|
-
}
|
|
284
|
-
},
|
|
285
|
-
"MEDIA_TYPES": {
|
|
286
|
-
"id": "media-types",
|
|
287
|
-
"name": "Media Types",
|
|
288
|
-
"description": "Rules for content type negotiation and document structure",
|
|
289
|
-
"guideline_url": "https://developer.siemens.com/guidelines/api-guidelines/rest/media-type.html",
|
|
290
|
-
"rule_id_range": "100-199",
|
|
291
|
-
"applies_to": ["JSON documents", "Response structure", "Field naming", "Resource objects"],
|
|
292
|
-
"keywords": ["media type", "content type", "json", "application/json", "UTF-8", "document structure", "data", "links", "meta"],
|
|
293
|
-
"related_categories": ["NAMING_CONVENTIONS", "PAGINATION", "ERROR_HANDLING"],
|
|
294
|
-
"priority": "high",
|
|
295
|
-
"expected_rules": {
|
|
296
|
-
"100": "API SHOULD use JSON-based media types",
|
|
297
|
-
"101": "API SHOULD use the following document structure",
|
|
298
|
-
"101.1": "API SHOULD use a top-level JSON object",
|
|
299
|
-
"101.2": "API SHOULD use the defined document structure",
|
|
300
|
-
"101.3": "The primary data MUST be represented by resource objects",
|
|
301
|
-
"101.4": "API MUST represent resources with resource objects",
|
|
302
|
-
"101.4.1": "Fields MUST follow the naming convention",
|
|
303
|
-
"101.5": "A links object SHOULD contain one or more links",
|
|
304
|
-
"101.6": "A link SHOULD be represented according to defined structure",
|
|
305
|
-
"101.6.1": "A link object SHOULD have defined structure fields",
|
|
306
|
-
"101.7": "A JSON document MAY provide meta information",
|
|
307
|
-
"101.7.1": "A meta field MUST contain meta information",
|
|
308
|
-
"101.7.2": "meta MUST be represented as JSON object",
|
|
309
|
-
"101.7.3": "meta fields SHOULD consider common field semantics",
|
|
310
|
-
"101.8": "Field names SHOULD apply naming conventions",
|
|
311
|
-
"101.8.1": "Field names MUST use allowed characters only",
|
|
312
|
-
"101.9": "Resource names SHOULD be in lowercase with hyphens",
|
|
313
|
-
"102": "Collection resource names SHOULD pluralize single resource"
|
|
314
|
-
}
|
|
315
|
-
},
|
|
316
|
-
"NAMING_CONVENTIONS": {
|
|
317
|
-
"id": "naming-conventions",
|
|
318
|
-
"name": "Naming Conventions",
|
|
319
|
-
"description": "Rules for consistent naming of resources, endpoints, and JSON properties",
|
|
320
|
-
"guideline_url": "https://developer.siemens.com/guidelines/api-guidelines/common/json-property-naming.html",
|
|
321
|
-
"rule_id_range": "101.8.x",
|
|
322
|
-
"applies_to": ["JSON properties", "URL paths", "Resource names", "Query parameters"],
|
|
323
|
-
"keywords": ["naming", "camelCase", "kebab-case", "field names", "property names", "resource names"],
|
|
324
|
-
"related_categories": ["MEDIA_TYPES"],
|
|
325
|
-
"priority": "medium",
|
|
326
|
-
"expected_rules": {
|
|
327
|
-
"naming_01": "Names MUST start with a lower case letter",
|
|
328
|
-
"naming_02": "Names MUST use camelCase for multi-word concatenation",
|
|
329
|
-
"naming_03": "Abbreviations and acronyms MUST be treated as words",
|
|
330
|
-
"naming_04": "Names MUST only consist of ASCII characters",
|
|
331
|
-
"naming_05": "Words in names SHOULD use American English",
|
|
332
|
-
"naming_06": "Names SHOULD be kept short and concise",
|
|
333
|
-
"naming_07": "Resource names SHOULD use kebab-case",
|
|
334
|
-
"naming_08": "Abbreviations SHOULD NOT be used except commonly used forms"
|
|
335
|
-
}
|
|
336
|
-
},
|
|
337
|
-
"SECURITY": {
|
|
338
|
-
"id": "security",
|
|
339
|
-
"name": "Security",
|
|
340
|
-
"description": "Security best practices and authentication requirements",
|
|
341
|
-
"guideline_url": "https://developer.siemens.com/guidelines/api-guidelines/rest/security.html",
|
|
342
|
-
"additional_url": "https://developer.siemens.com/guidelines/api-guidelines/common/http-api-protection.html",
|
|
343
|
-
"rule_id_range": "N/A",
|
|
344
|
-
"applies_to": ["Authentication", "Authorization", "HTTPS/TLS", "JWT tokens", "OAuth 2.0"],
|
|
345
|
-
"keywords": ["security", "auth", "oauth", "jwt", "https", "bearer token", "authentication", "authorization"],
|
|
346
|
-
"related_categories": ["ERROR_HANDLING"],
|
|
347
|
-
"priority": "critical",
|
|
348
|
-
"expected_rules": {
|
|
349
|
-
"sec_01": "REST APIs MUST be secured with OAuth 2.0 Bearer Token",
|
|
350
|
-
"sec_02": "APIs MUST use TLS for HTTP protection",
|
|
351
|
-
"sec_03": "Token format SHOULD be JWT",
|
|
352
|
-
"sec_04": "API implementation MUST check token signature",
|
|
353
|
-
"sec_05": "API implementation MUST check token expiry",
|
|
354
|
-
"sec_06": "API implementation MUST check token issuer",
|
|
355
|
-
"sec_07": "API implementation MUST check scope",
|
|
356
|
-
"sec_08": "API implementation SHOULD check token audience",
|
|
357
|
-
"sec_09": "Authorization header with Bearer token SHOULD be present"
|
|
358
|
-
}
|
|
359
|
-
},
|
|
360
|
-
"VERSIONING": {
|
|
361
|
-
"id": "versioning",
|
|
362
|
-
"name": "API Versioning",
|
|
363
|
-
"description": "Rules for semantic versioning and version management",
|
|
364
|
-
"guideline_url": "https://developer.siemens.com/guidelines/api-guidelines/common/api-versioning.html",
|
|
365
|
-
"additional_url": "https://developer.siemens.com/guidelines/api-guidelines/rest/versioning.html",
|
|
366
|
-
"rule_id_range": "200-299",
|
|
367
|
-
"applies_to": ["API versioning", "URI paths", "HTTP headers", "Semantic versioning"],
|
|
368
|
-
"keywords": ["versioning", "version", "v1", "v2", "semantic versioning", "api-version"],
|
|
369
|
-
"related_categories": [],
|
|
370
|
-
"priority": "medium",
|
|
371
|
-
"expected_rules": {
|
|
372
|
-
"200": "API version in HTTP requests",
|
|
373
|
-
"200.1": "Option 1 - API version in URI path",
|
|
374
|
-
"200.2": "Option 2 - API version in custom request header",
|
|
375
|
-
"201": "API Version in HTTP Responses",
|
|
376
|
-
"ver_01": "Version number MUST be expressed as MAJOR.MINOR.PATCH",
|
|
377
|
-
"ver_02": "MUST increment MAJOR for incompatible changes",
|
|
378
|
-
"ver_03": "MUST increment MINOR for backward compatible additions",
|
|
379
|
-
"ver_04": "MUST increment PATCH for backward compatible fixes"
|
|
380
|
-
}
|
|
381
|
-
},
|
|
382
|
-
"COMMON_OPERATIONS": {
|
|
383
|
-
"id": "common-operations",
|
|
384
|
-
"name": "Common Operations",
|
|
385
|
-
"description": "Standard REST operations (GET, POST, PUT, PATCH, DELETE)",
|
|
386
|
-
"guideline_url": "https://developer.siemens.com/guidelines/api-guidelines/rest/common-operations.html",
|
|
387
|
-
"rule_id_range": "800-899",
|
|
388
|
-
"applies_to": ["HTTP methods", "CRUD operations"],
|
|
389
|
-
"keywords": ["get", "post", "put", "patch", "delete", "crud", "operations"],
|
|
390
|
-
"related_categories": ["ERROR_HANDLING"],
|
|
391
|
-
"priority": "high",
|
|
392
|
-
"expected_rules": {
|
|
393
|
-
"ops_01": "Use appropriate HTTP methods for operations",
|
|
394
|
-
"ops_02": "GET requests MUST be safe and idempotent",
|
|
395
|
-
"ops_03": "PUT and DELETE MUST be idempotent",
|
|
396
|
-
"ops_04": "POST creates new resources",
|
|
397
|
-
"ops_05": "Use PATCH for partial updates"
|
|
398
|
-
}
|
|
399
|
-
},
|
|
400
|
-
"BULK_OPERATIONS": {
|
|
401
|
-
"id": "bulk-operations",
|
|
402
|
-
"name": "Bulk Operations",
|
|
403
|
-
"description": "Rules for handling multiple operations in single request",
|
|
404
|
-
"guideline_url": "https://developer.siemens.com/guidelines/api-guidelines/rest/bulk-operations.html",
|
|
405
|
-
"rule_id_range": "900-999",
|
|
406
|
-
"applies_to": ["Batch processing", "Multiple resource operations"],
|
|
407
|
-
"keywords": ["bulk", "batch", "multiple", "operations"],
|
|
408
|
-
"related_categories": ["ERROR_HANDLING"],
|
|
409
|
-
"priority": "medium",
|
|
410
|
-
"expected_rules": {
|
|
411
|
-
"bulk_01": "Support bulk operations for efficiency",
|
|
412
|
-
"bulk_02": "Provide partial success reporting"
|
|
413
|
-
}
|
|
414
|
-
},
|
|
415
|
-
"FILTERING": {
|
|
416
|
-
"id": "filtering",
|
|
417
|
-
"name": "Filtering",
|
|
418
|
-
"description": "Query parameter-based filtering of collection resources",
|
|
419
|
-
"guideline_url": "https://developer.siemens.com/guidelines/api-guidelines/rest/filtering.html",
|
|
420
|
-
"rule_id_range": "400-499",
|
|
421
|
-
"applies_to": ["Collection endpoints", "Query parameters"],
|
|
422
|
-
"keywords": ["filter", "filtering", "query", "search"],
|
|
423
|
-
"related_categories": ["PAGINATION"],
|
|
424
|
-
"priority": "medium",
|
|
425
|
-
"expected_rules": {
|
|
426
|
-
"400": "API MAY support filtering",
|
|
427
|
-
"filter_01": "Use query parameters for filtering",
|
|
428
|
-
"filter_02": "Support common filter operations"
|
|
429
|
-
}
|
|
430
|
-
},
|
|
431
|
-
"SORTING": {
|
|
432
|
-
"id": "sorting",
|
|
433
|
-
"name": "Sorting",
|
|
434
|
-
"description": "Query parameter-based sorting of collection resources",
|
|
435
|
-
"guideline_url": "https://developer.siemens.com/guidelines/api-guidelines/rest/sorting.html",
|
|
436
|
-
"rule_id_range": "700-799",
|
|
437
|
-
"applies_to": ["Collection endpoints", "Query parameters"],
|
|
438
|
-
"keywords": ["sort", "sorting", "order", "orderby"],
|
|
439
|
-
"related_categories": ["PAGINATION"],
|
|
440
|
-
"priority": "low",
|
|
441
|
-
"expected_rules": {
|
|
442
|
-
"700": "API MAY provide sorting of collections",
|
|
443
|
-
"700.1": "Parameter sort MUST specify sort fields",
|
|
444
|
-
"700.2": "API MAY support multiple sort fields",
|
|
445
|
-
"700.3": "API MAY support defining sort order per field"
|
|
446
|
-
}
|
|
447
|
-
},
|
|
448
|
-
"SPARSE_FIELDSETS": {
|
|
449
|
-
"id": "sparse-fieldsets",
|
|
450
|
-
"name": "Sparse Fieldsets",
|
|
451
|
-
"description": "Client-specified field selection for resource responses",
|
|
452
|
-
"guideline_url": "https://developer.siemens.com/guidelines/api-guidelines/rest/sparse-fieldsets.html",
|
|
453
|
-
"rule_id_range": "500-599",
|
|
454
|
-
"applies_to": ["Resource responses", "Query parameters"],
|
|
455
|
-
"keywords": ["fields", "sparse", "projection", "select"],
|
|
456
|
-
"related_categories": ["MEDIA_TYPES"],
|
|
457
|
-
"priority": "low",
|
|
458
|
-
"expected_rules": {
|
|
459
|
-
"500": "API MAY support sparse fieldsets",
|
|
460
|
-
"fields_01": "Use fields parameter for field selection"
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
},
|
|
464
|
-
"metadata": {
|
|
465
|
-
"total_categories": 11,
|
|
466
|
-
"total_rules_estimated": 80,
|
|
467
|
-
"compliance_levels": {
|
|
468
|
-
"basic": {
|
|
469
|
-
"name": "Basic Compliance",
|
|
470
|
-
"description": "MUST requirements only for critical categories",
|
|
471
|
-
"includes": ["SECURITY", "ERROR_HANDLING"],
|
|
472
|
-
"required_rules": 9,
|
|
473
|
-
"expected_score": "30%"
|
|
474
|
-
},
|
|
475
|
-
"recommended": {
|
|
476
|
-
"name": "Recommended Compliance",
|
|
477
|
-
"description": "All MUST and SHOULD requirements",
|
|
478
|
-
"includes": ["SECURITY", "ERROR_HANDLING", "MEDIA_TYPES", "PAGINATION", "NAMING_CONVENTIONS", "VERSIONING"],
|
|
479
|
-
"required_rules": 60,
|
|
480
|
-
"expected_score": "80%"
|
|
481
|
-
},
|
|
482
|
-
"full_x_readiness": {
|
|
483
|
-
"name": "Full X-Readiness",
|
|
484
|
-
"description": "All standards including MAY considerations",
|
|
485
|
-
"includes": ["PAGINATION", "ERROR_HANDLING", "MEDIA_TYPES", "NAMING_CONVENTIONS", "SECURITY", "VERSIONING", "COMMON_OPERATIONS", "BULK_OPERATIONS", "FILTERING", "SORTING", "SPARSE_FIELDSETS"],
|
|
486
|
-
"required_rules_estimated": 80,
|
|
487
|
-
"expected_score": "100%"
|
|
488
|
-
}
|
|
489
|
-
},
|
|
490
|
-
"intent_keywords": {
|
|
491
|
-
"pagination": ["PAGINATION"],
|
|
492
|
-
"paging": ["PAGINATION"],
|
|
493
|
-
"page": ["PAGINATION"],
|
|
494
|
-
"error": ["ERROR_HANDLING"],
|
|
495
|
-
"error handling": ["ERROR_HANDLING"],
|
|
496
|
-
"media type": ["MEDIA_TYPES"],
|
|
497
|
-
"content type": ["MEDIA_TYPES"],
|
|
498
|
-
"json": ["MEDIA_TYPES"],
|
|
499
|
-
"naming": ["NAMING_CONVENTIONS"],
|
|
500
|
-
"camelCase": ["NAMING_CONVENTIONS"],
|
|
501
|
-
"security": ["SECURITY"],
|
|
502
|
-
"auth": ["SECURITY"],
|
|
503
|
-
"oauth": ["SECURITY"],
|
|
504
|
-
"jwt": ["SECURITY"],
|
|
505
|
-
"versioning": ["VERSIONING"],
|
|
506
|
-
"version": ["VERSIONING"],
|
|
507
|
-
"rest": ["REST_API_GUIDELINES"],
|
|
508
|
-
"http": ["REST_API_GUIDELINES"],
|
|
509
|
-
"sorting": ["SORTING"],
|
|
510
|
-
"sort": ["SORTING"],
|
|
511
|
-
"filtering": ["FILTERING"],
|
|
512
|
-
"filter": ["FILTERING"],
|
|
513
|
-
"bulk": ["BULK_OPERATIONS"],
|
|
514
|
-
"batch": ["BULK_OPERATIONS"],
|
|
515
|
-
"sparse": ["SPARSE_FIELDSETS"],
|
|
516
|
-
"fields": ["SPARSE_FIELDSETS"],
|
|
517
|
-
"operations": ["COMMON_OPERATIONS"],
|
|
518
|
-
"crud": ["COMMON_OPERATIONS"],
|
|
519
|
-
"x-readiness": ["PAGINATION", "ERROR_HANDLING", "MEDIA_TYPES", "NAMING_CONVENTIONS", "SECURITY", "VERSIONING", "COMMON_OPERATIONS"],
|
|
520
|
-
"full check": ["PAGINATION", "ERROR_HANDLING", "MEDIA_TYPES", "NAMING_CONVENTIONS", "SECURITY", "VERSIONING", "COMMON_OPERATIONS", "BULK_OPERATIONS", "FILTERING", "SORTING", "SPARSE_FIELDSETS"],
|
|
521
|
-
"api readiness": ["PAGINATION", "ERROR_HANDLING", "MEDIA_TYPES", "NAMING_CONVENTIONS", "SECURITY", "VERSIONING", "COMMON_OPERATIONS"]
|
|
522
|
-
}
|
|
523
|
-
}
|
|
524
|
-
}
|