fmea-api-mcp-server 1.1.45 → 1.1.47

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/dist/index.js CHANGED
@@ -28,7 +28,7 @@ class ApiDocsServer {
28
28
  constructor() {
29
29
  this.server = new Server({
30
30
  name: "api-docs-mcp",
31
- version: "1.1.45",
31
+ version: "1.1.47",
32
32
  }, {
33
33
  capabilities: {
34
34
  resources: {},
package/dist/synonyms.js CHANGED
@@ -45,7 +45,7 @@ export const RESOURCE_ALIASES = {
45
45
  'recommendation-item': ['recommendation item', 'recommended action', 'corrective action', 'action item', 'mitigation item'], // [R20] New v2 recommendation items
46
46
  'fourm': ['4m', 'four m', '4m analysis', 'man machine material environment'], // 4M Analysis
47
47
  'term': ['term', 'terms', 'taxonomy', 'terminology', 'glossary'], // Term tree management — removed 'classification' (now dedicated resource [R28])
48
- 'condition-library': ['condition library', 'stress condition', 'design condition', 'process condition', 'stress library', 'design library', 'process library'], // [R24] Condition library resource
48
+ 'condition-library': ['condition library', 'stress condition', 'design condition', 'process condition', 'stress library', 'design library', 'process library', 'factor', 'common term', 'common terms', 'shared term'], // [R24] [R38] Added factor/common term aliases
49
49
  'system-definition': ['system definition', 'system def', 'sys def', 'system spec', 'system specification', 'system function', 'system requirement'], // [R21] New system definition resource — removed 'condition/conditions' to avoid conflict with condition-library
50
50
  'system-definition-excel': ['system definition excel', 'system definition import', 'system definition export', 'conditions export', 'conditions import', 'export conditions', 'import conditions'], // [R23] Excel import/export for system definition conditions
51
51
  'high-item': ['high item', 'high items', 'high priority item', 'high priority risk', 'high priority', 'top item', 'top risk', 'risk ranking', 'high risk', 'priority list', 'batch upsert items', 'reorder items'], // [R23] High items resource
@@ -66,7 +66,7 @@ export const SYNONYM_GROUPS = {
66
66
  // Read / Retrieve
67
67
  "get": ["fetch", "retrieve", "read", "load", "find", "search", "query", "list", "show", "details"],
68
68
  "find": ["get", "search", "retrieve", "lookup", "show", "detect", "locate"],
69
- "search": ["find", "get", "query", "lookup", "show", "explore", "scan"],
69
+ "search": ["find", "get", "lookup", "query", "show", "explore", "scan"], // [R38] moved "query" to pos4 to avoid false path-boost on /tree-search/.../query
70
70
  "show": ["get", "display", "view", "fetch", "find", "present"],
71
71
  "list": ["get", "all", "collection", "show", "summary", "index", "catalog"],
72
72
  "summary": ["list", "all", "overview", "collection", "report", "stats"],
@@ -79,6 +79,7 @@ export const SYNONYM_GROUPS = {
79
79
  "update": ["modify", "edit", "change", "save", "put", "patch", "set", "refresh", "renew", "upgrade"],
80
80
  "modify": ["update", "edit", "change", "adjust", "alter", "tweak"],
81
81
  "save": ["update", "store", "persist", "write", "record", "commit"],
82
+ "replace": ["overwrite", "substitute", "swap", "update", "save", "put"], // [R38] replace → save/update for bulk-replace endpoints
82
83
  "set": ["update", "assign", "define", "configure", "specify"],
83
84
  // Delete
84
85
  "delete": ["remove", "destroy", "clear", "erase", "drop", "cancel", "archive", "unlink"],
@@ -160,7 +161,7 @@ export const SYNONYM_GROUPS = {
160
161
  "display": ["visibility", "show", "hide", "toggle", "visible"],
161
162
  "default": ["preset", "standard", "baseline", "initial"],
162
163
  "refresh": ["reload", "update", "recalculate", "regenerate", "sync"],
163
- "regenerate": ["refresh", "renew", "rotate", "reissue"], // [R33] Distinguish from "create"
164
+ "regenerate": ["rebuild", "reindex", "refresh", "renew", "rotate", "reissue"], // [R33] [R37] rebuild/reindex first to rank within slice(0,3) limit
164
165
  "snapshot": ["cache", "refresh", "summary", "data snapshot"],
165
166
  // [R28] Classification Domain
166
167
  "classification": ["category", "label", "symbol", "group", "class", "tag"],
@@ -7,13 +7,16 @@
7
7
  "path": "/api/v2/admin/api-keys/{id}",
8
8
  "method": "DELETE",
9
9
  "operationId": "deactivate",
10
- "summary": "Deactivate API key",
11
- "description": "Administrators can forcibly deactivate (disable) any API key in the system using its unique ID. This operation immediately invalidates the key, preventing any further API requests authenticated with it. Use this endpoint to revoke compromised keys, enforce security policies, or manage user access. Unlike user-initiated deletion, this is an administrative override that requires ADMIN privileges and standard session authentication (API key authentication is explicitly blocked). The key is soft-deactivated and may be retained for audit purposes. Related actions include bulk deactivation by user ID and viewing audit logs of administrative actions.",
12
- "tags": [],
10
+ "summary": "Force-deactivate an API key by ID",
11
+ "description": "Immediately deactivates the specified API key regardless of its owner. Only accessible via session (JWT) authentication; API key auth is rejected. Returns 204 No Content on success.",
12
+ "tags": [
13
+ "Admin - API Keys"
14
+ ],
13
15
  "parameters": [
14
16
  {
15
17
  "name": "id",
16
18
  "in": "path",
19
+ "description": "API key ID to deactivate",
17
20
  "required": true,
18
21
  "schema": {
19
22
  "type": "integer",
@@ -34,13 +37,16 @@
34
37
  "path": "/api/v2/admin/api-keys/user/{userid}",
35
38
  "method": "DELETE",
36
39
  "operationId": "deactivateByUserId",
37
- "summary": "Deactivate API keys by user ID",
38
- "description": "Administrators can bulk deactivate (revoke) all API keys belonging to a specific user in a single operation. This is useful for immediately revoking all API access when a user is disabled, leaves the organization, or has their credentials compromised. The endpoint returns a count of deactivated keys. Requires ADMIN privileges and standard session authentication (API key authentication is explicitly blocked for security reasons). Unlike individual key deactivation, this targets all keys associated with the specified user ID. For targeted deactivation of specific keys, use the individual key deactivation endpoint. This action is logged in the admin audit trail for compliance and security monitoring.",
39
- "tags": [],
40
+ "summary": "Deactivate all API keys for a specific user",
41
+ "description": "Bulk-deactivates all active API keys belonging to the specified user. Only accessible via session (JWT) authentication; API key auth is rejected. Returns the count of deactivated keys in the response body.",
42
+ "tags": [
43
+ "Admin - API Keys"
44
+ ],
40
45
  "parameters": [
41
46
  {
42
47
  "name": "userid",
43
48
  "in": "path",
49
+ "description": "User ID whose API keys will be deactivated",
44
50
  "required": true,
45
51
  "schema": {
46
52
  "type": "string"
@@ -61,8 +67,10 @@
61
67
  "method": "GET",
62
68
  "operationId": "getStats",
63
69
  "summary": "Get API key statistics",
64
- "description": "Retrieves system-wide statistics and metrics about API keys for administrative monitoring and reporting. Provides aggregate data including total key count, active vs inactive keys, expired keys, and usage patterns. Use this endpoint for dashboard displays, capacity planning, security auditing, and compliance reporting. Requires ADMIN privileges and standard session authentication (API key authentication is blocked). Statistics are calculated in real-time from the current database state. Complementary to this endpoint, use the admin list endpoint for detailed key information with filters, and the audit logs endpoint for tracking administrative actions on keys.",
65
- "tags": [],
70
+ "description": "Returns aggregate statistics for all API keys in the system, including total count, active/inactive counts, and expiry distribution. Only accessible via session (JWT) authentication; API key auth is rejected.",
71
+ "tags": [
72
+ "Admin - API Keys"
73
+ ],
66
74
  "parameters": [],
67
75
  "responses": {
68
76
  "default": {
@@ -115,13 +123,16 @@
115
123
  "path": "/api/v2/admin/api-keys",
116
124
  "method": "GET",
117
125
  "operationId": "list_3",
118
- "summary": "List API keys (Admin)",
119
- "description": "Administrators can retrieve a comprehensive, paginated list of all API keys across the system with powerful filtering capabilities. Supports filtering by user ID, activation status (active/inactive), and expiration status (expired keys only). Use this endpoint for security audits, compliance reporting, user management, and monitoring API key distribution across the organization. Returns detailed key metadata including owner, creation date, expiration, and status. Requires ADMIN privileges and standard session authentication (API key authentication is blocked). Page size is limited to 100 items per request for performance. This is the administrative counterpart to the user-specific list endpoint, providing visibility into all keys rather than just the authenticated user's keys.",
120
- "tags": [],
126
+ "summary": "List all API keys across all users",
127
+ "description": "Returns a paged list of API keys for all users. Supports filtering by user ID, active status, and expiry state. Only accessible via session (JWT) authentication; API key auth is rejected. Page size is capped at 100.",
128
+ "tags": [
129
+ "Admin - API Keys"
130
+ ],
121
131
  "parameters": [
122
132
  {
123
133
  "name": "userid",
124
134
  "in": "query",
135
+ "description": "Filter by user ID (optional, exact match)",
125
136
  "schema": {
126
137
  "type": "string"
127
138
  }
@@ -129,6 +140,7 @@
129
140
  {
130
141
  "name": "isActive",
131
142
  "in": "query",
143
+ "description": "Filter by active status: true=active only, false=inactive only",
132
144
  "schema": {
133
145
  "type": "boolean"
134
146
  }
@@ -136,6 +148,7 @@
136
148
  {
137
149
  "name": "expiredOnly",
138
150
  "in": "query",
151
+ "description": "If true, return only expired keys",
139
152
  "schema": {
140
153
  "type": "boolean"
141
154
  }
@@ -143,6 +156,7 @@
143
156
  {
144
157
  "name": "page",
145
158
  "in": "query",
159
+ "description": "Page number (default: 1)",
146
160
  "schema": {
147
161
  "type": "integer",
148
162
  "default": 1,
@@ -152,6 +166,7 @@
152
166
  {
153
167
  "name": "size",
154
168
  "in": "query",
169
+ "description": "Page size (default: 20, max: 100)",
155
170
  "schema": {
156
171
  "type": "integer",
157
172
  "default": 20,
@@ -238,13 +253,16 @@
238
253
  "path": "/api/v2/admin/apikeys/logs",
239
254
  "method": "GET",
240
255
  "operationId": "getAuditLogs",
241
- "summary": "Get API key audit logs",
242
- "description": "Retrieves administrative audit logs tracking all management actions performed on API keys, providing a complete trail for security monitoring and compliance. Logs include deactivations, bulk revocations, and other administrative operations with timestamps, acting admin, target users, and action types. Supports filtering by administrator user ID, target user ID, action type, and date ranges (start/end dates). Use this endpoint for forensic analysis, security incident response, compliance auditing, and investigating unauthorized access attempts. Requires ADMIN privileges and standard session authentication (API key authentication is blocked). Results are paginated with a maximum of 100 items per page. This differs from user-facing usage logs which track API requests made using keys, whereas this tracks administrative management actions on keys themselves.",
243
- "tags": [],
256
+ "summary": "Query API key audit logs",
257
+ "description": "Returns a paged list of API key admin actions (create, deactivate, etc.). Supports filtering by admin user ID, target user ID, action type, and date range. Dates must be in ISO-8601 format (YYYY-MM-DD). Only accessible via session (JWT) authentication; API key auth is rejected. Page size is capped at 100.",
258
+ "tags": [
259
+ "Admin - API Key Audit Logs"
260
+ ],
244
261
  "parameters": [
245
262
  {
246
263
  "name": "adminUserid",
247
264
  "in": "query",
265
+ "description": "Filter by the admin who performed the action (optional, exact match)",
248
266
  "schema": {
249
267
  "type": "string"
250
268
  }
@@ -252,6 +270,7 @@
252
270
  {
253
271
  "name": "targetUserid",
254
272
  "in": "query",
273
+ "description": "Filter by the user whose key was affected (optional, exact match)",
255
274
  "schema": {
256
275
  "type": "string"
257
276
  }
@@ -259,6 +278,7 @@
259
278
  {
260
279
  "name": "action",
261
280
  "in": "query",
281
+ "description": "Filter by action type (e.g., DEACTIVATE, CREATE)",
262
282
  "schema": {
263
283
  "type": "string"
264
284
  }
@@ -266,6 +286,7 @@
266
286
  {
267
287
  "name": "startDate",
268
288
  "in": "query",
289
+ "description": "Start date for the log query range (ISO-8601, YYYY-MM-DD, inclusive)",
269
290
  "schema": {
270
291
  "type": "string"
271
292
  }
@@ -273,6 +294,7 @@
273
294
  {
274
295
  "name": "endDate",
275
296
  "in": "query",
297
+ "description": "End date for the log query range (ISO-8601, YYYY-MM-DD, inclusive)",
276
298
  "schema": {
277
299
  "type": "string"
278
300
  }
@@ -280,6 +302,7 @@
280
302
  {
281
303
  "name": "page",
282
304
  "in": "query",
305
+ "description": "Page number (default: 1)",
283
306
  "schema": {
284
307
  "type": "integer",
285
308
  "default": 1,
@@ -289,6 +312,7 @@
289
312
  {
290
313
  "name": "size",
291
314
  "in": "query",
315
+ "description": "Page size (default: 20, max: 100)",
292
316
  "schema": {
293
317
  "type": "integer",
294
318
  "default": 20,
@@ -360,9 +384,11 @@
360
384
  "path": "/api/v2/api-keys",
361
385
  "method": "GET",
362
386
  "operationId": "list_4",
363
- "summary": "List API keys",
364
- "description": "Retrieves all API keys belonging to the currently authenticated user, providing a comprehensive view of their personal API access credentials. Returns key metadata including key identifier, name, creation date, expiration date, activation status, and last used timestamp. Use this endpoint to manage your API keys, review active credentials, monitor key usage, and identify expired or inactive keys that can be cleaned up. Requires READER level authentication or higher. This is the user-facing counterpart to the administrative list endpoint, which shows all keys across the system. Users can only view their own keys for security isolation. For detailed usage analytics on individual keys, use the logs and log summary endpoints with a specific key ID.",
365
- "tags": [],
387
+ "summary": "List all API keys for the authenticated user",
388
+ "description": "Returns all API keys belonging to the currently authenticated user, including active and inactive keys. Key values are masked in the response.",
389
+ "tags": [
390
+ "API Keys"
391
+ ],
366
392
  "parameters": [],
367
393
  "responses": {
368
394
  "default": {
@@ -433,9 +459,11 @@
433
459
  "path": "/api/v2/api-keys",
434
460
  "method": "POST",
435
461
  "operationId": "create_1",
436
- "summary": "Create API key",
437
- "description": "Generates and issues a new API key for the authenticated user, enabling programmatic access to the FMEA API. The request must specify a descriptive name for the key and an optional expiration date. Upon creation, the full API key value is returned in the response (this is the only time it will be displayed in plain text, so store it securely). Use this endpoint to create keys for API integrations, automated scripts, third-party applications, or CI/CD pipelines. Requires READER level authentication or higher. Each key is unique, cryptographically secure, and associated with the creating user's identity for audit purposes. Keys can be managed (listed, deleted, regenerated) through the other endpoints in this API. If a key is compromised, use the regenerate endpoint to create a new secret without changing the key ID, or delete it entirely.",
438
- "tags": [],
462
+ "summary": "Issue a new API key for the authenticated user",
463
+ "description": "Creates and returns a new API key for the currently authenticated user. The key is returned in full only at creation time; subsequent list calls return only the masked key. Returns 201 Created on success.",
464
+ "tags": [
465
+ "API Keys"
466
+ ],
439
467
  "parameters": [],
440
468
  "requestBody": {
441
469
  "content": {
@@ -521,13 +549,16 @@
521
549
  "path": "/api/v2/api-keys/{id}",
522
550
  "method": "DELETE",
523
551
  "operationId": "delete_1",
524
- "summary": "Delete API key",
525
- "description": "Permanently deletes (removes) an API key belonging to the authenticated user. This operation immediately invalidates the key, preventing any further API requests authenticated with it. Use this endpoint to revoke compromised credentials, clean up unused keys, or remove keys that are no longer needed for security best practices. Requires READER level authentication or higher. Users can only delete their own keys for security isolation. The deletion is permanent and cannot be undone, so ensure the key is not in active use before deletion. For temporary revocation where you might want to reactivate later, consider using administrative deactivation instead (requires admin privileges). This endpoint returns no content on success (HTTP 204). Always verify you are deleting the correct key ID, as the action is irreversible.",
526
- "tags": [],
552
+ "summary": "Delete an API key owned by the authenticated user",
553
+ "description": "Permanently deletes the specified API key. The key must belong to the currently authenticated user. Returns 204 No Content on success.",
554
+ "tags": [
555
+ "API Keys"
556
+ ],
527
557
  "parameters": [
528
558
  {
529
559
  "name": "id",
530
560
  "in": "path",
561
+ "description": "API key ID to delete",
531
562
  "required": true,
532
563
  "schema": {
533
564
  "type": "integer",
@@ -548,13 +579,16 @@
548
579
  "path": "/api/v2/api-keys/{id}/logs",
549
580
  "method": "GET",
550
581
  "operationId": "getLogs",
551
- "summary": "Get API key usage logs",
552
- "description": "Retrieves detailed usage logs for a specific API key owned by the authenticated user, showing all API requests made using that key. Each log entry includes timestamp, endpoint path, HTTP method, response status code, and request metadata. Supports filtering by date range (start/end dates), specific endpoint, and HTTP status code for targeted analysis. Results are paginated with a maximum of 100 items per page. Use this endpoint for security monitoring, debugging integration issues, tracking API usage patterns, and identifying suspicious activity. Requires READER level authentication or higher. Users can only view logs for their own keys. This provides granular request-level detail, while the summary endpoint offers aggregated statistics. The log retention period applies, so very old logs may not be available.",
553
- "tags": [],
582
+ "summary": "Get usage logs for an API key",
583
+ "description": "Returns paged usage logs for the specified API key owned by the authenticated user. Supports filtering by date range, endpoint path, and HTTP status code. Dates must be in ISO-8601 format (YYYY-MM-DD). Page size is capped at 100.",
584
+ "tags": [
585
+ "API Keys"
586
+ ],
554
587
  "parameters": [
555
588
  {
556
589
  "name": "id",
557
590
  "in": "path",
591
+ "description": "API key ID",
558
592
  "required": true,
559
593
  "schema": {
560
594
  "type": "integer",
@@ -564,6 +598,7 @@
564
598
  {
565
599
  "name": "startDate",
566
600
  "in": "query",
601
+ "description": "Start date for the log range (ISO-8601, YYYY-MM-DD, inclusive)",
567
602
  "schema": {
568
603
  "type": "string"
569
604
  }
@@ -571,6 +606,7 @@
571
606
  {
572
607
  "name": "endDate",
573
608
  "in": "query",
609
+ "description": "End date for the log range (ISO-8601, YYYY-MM-DD, inclusive)",
574
610
  "schema": {
575
611
  "type": "string"
576
612
  }
@@ -578,6 +614,7 @@
578
614
  {
579
615
  "name": "endpoint",
580
616
  "in": "query",
617
+ "description": "Filter by called endpoint path (optional, partial match)",
581
618
  "schema": {
582
619
  "type": "string"
583
620
  }
@@ -585,6 +622,7 @@
585
622
  {
586
623
  "name": "statusCode",
587
624
  "in": "query",
625
+ "description": "Filter by HTTP status code (optional, e.g., 200, 401, 500)",
588
626
  "schema": {
589
627
  "type": "integer",
590
628
  "format": "int32"
@@ -593,6 +631,7 @@
593
631
  {
594
632
  "name": "page",
595
633
  "in": "query",
634
+ "description": "Page number (default: 0)",
596
635
  "schema": {
597
636
  "type": "integer",
598
637
  "default": 0,
@@ -602,6 +641,7 @@
602
641
  {
603
642
  "name": "size",
604
643
  "in": "query",
644
+ "description": "Page size (default: 20, max: 100)",
605
645
  "schema": {
606
646
  "type": "integer",
607
647
  "default": 20,
@@ -622,13 +662,16 @@
622
662
  "path": "/api/v2/api-keys/{id}/logs/summary",
623
663
  "method": "GET",
624
664
  "operationId": "getLogsSummary",
625
- "summary": "Get API key logs summary",
626
- "description": "Retrieves aggregated usage statistics and summary analytics for a specific API key owned by the authenticated user. Provides high-level metrics including total request count, success rate (2xx/3xx vs 4xx/5xx), most frequently used endpoints, error breakdown, and activity timeline within the specified date range. Use this endpoint for usage analytics, quota monitoring, identifying integration health, and generating usage reports without processing individual log entries. Requires READER level authentication or higher. Users can only view summaries for their own keys. Supports optional date range filtering to analyze specific time periods. This complements the detailed logs endpoint by providing pre-aggregated insights for quick assessment of API key performance and usage patterns.",
627
- "tags": [],
665
+ "summary": "Get usage log summary for an API key",
666
+ "description": "Returns aggregated usage statistics for the specified API key owned by the authenticated user. Supports filtering by date range (ISO-8601 YYYY-MM-DD). Includes total request counts grouped by status code and endpoint.",
667
+ "tags": [
668
+ "API Keys"
669
+ ],
628
670
  "parameters": [
629
671
  {
630
672
  "name": "id",
631
673
  "in": "path",
674
+ "description": "API key ID",
632
675
  "required": true,
633
676
  "schema": {
634
677
  "type": "integer",
@@ -638,6 +681,7 @@
638
681
  {
639
682
  "name": "startDate",
640
683
  "in": "query",
684
+ "description": "Start date for the summary range (ISO-8601, YYYY-MM-DD, inclusive)",
641
685
  "schema": {
642
686
  "type": "string"
643
687
  }
@@ -645,6 +689,7 @@
645
689
  {
646
690
  "name": "endDate",
647
691
  "in": "query",
692
+ "description": "End date for the summary range (ISO-8601, YYYY-MM-DD, inclusive)",
648
693
  "schema": {
649
694
  "type": "string"
650
695
  }
@@ -714,13 +759,16 @@
714
759
  "path": "/api/v2/api-keys/{id}/regenerate",
715
760
  "method": "POST",
716
761
  "operationId": "regenerate",
717
- "summary": "Regenerate API key",
718
- "description": "Regenerates (replaces the secret value of) an existing API key while preserving its ID and metadata. This operation creates a new cryptographically secure key value, immediately invalidating the old secret. The full new API key value is returned in the response (store it securely, as this is the only time it will be displayed). Optionally accepts a new expiration date. Use this endpoint to rotate credentials for security compliance, respond to potential key exposure, or implement periodic key rotation policies without changing integration configuration. Requires READER level authentication or higher. Users can only regenerate their own keys. The old key becomes invalid immediately upon regeneration, so update all applications using the key promptly. This differs from deletion + recreation in that the key ID remains stable, making it easier to update integrations.",
719
- "tags": [],
762
+ "summary": "Regenerate an API key",
763
+ "description": "Replaces the secret value of an existing API key with a newly generated one. An optional new expiry date may be specified in the request body. The new key value is returned in full only in this response.",
764
+ "tags": [
765
+ "API Keys"
766
+ ],
720
767
  "parameters": [
721
768
  {
722
769
  "name": "id",
723
770
  "in": "path",
771
+ "description": "API key ID to regenerate",
724
772
  "required": true,
725
773
  "schema": {
726
774
  "type": "integer",
@@ -720,13 +720,16 @@
720
720
  "path": "/api/v2/template/block-diagrams/{blockDiagramType}/sheet-headers",
721
721
  "method": "GET",
722
722
  "operationId": "getBlockDiagramSheetHeaders",
723
- "summary": "Get Block Diagram Excel Sheet Headers (v2)",
724
- "description": "Retrieves the standardized Excel sheet headers and column definitions for a specific block diagram type. Use this endpoint to obtain the expected column structure, field names, and data format requirements when creating or validating Excel files for block diagram import. This is essential for ensuring Excel uploads conform to the correct schema, preventing import errors and data validation failures. The response defines all required and optional columns, data types, and formatting rules. Supports dynamic template generation and client-side Excel validation. Critical for building import interfaces, spreadsheet validation tools, and documentation generation. Use before attempting Excel data import operations.",
725
- "tags": [],
723
+ "summary": "Get block diagram Excel sheet headers for a given diagram type",
724
+ "description": "Returns the ordered list of column headers used in the Excel import/export sheet for the specified block diagram type. Valid values for blockDiagramType: P-DIAGRAM, BOUNDARY-DIAGRAM.",
725
+ "tags": [
726
+ "Template"
727
+ ],
726
728
  "parameters": [
727
729
  {
728
730
  "name": "blockDiagramType",
729
731
  "in": "path",
732
+ "description": "Block diagram type. Valid values: P-DIAGRAM, BOUNDARY-DIAGRAM.",
730
733
  "required": true,
731
734
  "schema": {
732
735
  "type": "string",
@@ -149,7 +149,7 @@
149
149
  "method": "POST",
150
150
  "operationId": "createConditionLibraryNode",
151
151
  "summary": "Create condition library node",
152
- "description": "Creates a node in the condition library for the requested type. When parentTag is omitted, the node is created under the root tag (0000).",
152
+ "description": "Creates a node in the condition library for the requested type. When parentId is omitted, the node is created under the root tag (0000).",
153
153
  "tags": [
154
154
  "Condition Library"
155
155
  ],
@@ -181,7 +181,7 @@
181
181
  "title": {
182
182
  "type": "string"
183
183
  },
184
- "parentTag": {
184
+ "parentId": {
185
185
  "type": "string"
186
186
  }
187
187
  }
@@ -526,6 +526,69 @@
526
526
  }
527
527
  }
528
528
  }
529
+ },
530
+ {
531
+ "path": "/api/v2/condition-library/{type}/children",
532
+ "method": "PUT",
533
+ "operationId": "saveConditionLibraryChildren",
534
+ "summary": "Save condition library children",
535
+ "description": "Replaces children of the specified parent node. Server computes diff against current state: creates new nodes, updates changed titles, deletes removed nodes (with subtrees), and reorders by array index.",
536
+ "tags": [
537
+ "Condition Library"
538
+ ],
539
+ "parameters": [
540
+ {
541
+ "name": "type",
542
+ "in": "path",
543
+ "description": "Condition library type (stress|design|process)",
544
+ "required": true,
545
+ "schema": {
546
+ "type": "string",
547
+ "enum": [
548
+ "STRESS",
549
+ "DESIGN",
550
+ "PROCESS"
551
+ ]
552
+ }
553
+ }
554
+ ],
555
+ "requestBody": {
556
+ "content": {
557
+ "application/json": {
558
+ "schema": {
559
+ "type": "object",
560
+ "properties": {
561
+ "parentId": {
562
+ "type": "string"
563
+ },
564
+ "children": {
565
+ "type": "array",
566
+ "items": {
567
+ "type": "object",
568
+ "properties": {
569
+ "serial": {
570
+ "type": "integer",
571
+ "format": "int32"
572
+ },
573
+ "title": {
574
+ "type": "string"
575
+ }
576
+ }
577
+ }
578
+ }
579
+ }
580
+ }
581
+ }
582
+ }
583
+ },
584
+ "responses": {
585
+ "default": {
586
+ "description": "default response",
587
+ "content": {
588
+ "application/json": {}
589
+ }
590
+ }
591
+ }
529
592
  }
530
593
  ]
531
594
  }
@@ -43,7 +43,7 @@
43
43
  "schema": {
44
44
  "type": "object",
45
45
  "properties": {
46
- "parentTag": {
46
+ "parentId": {
47
47
  "type": "string"
48
48
  },
49
49
  "sheetIndex": {
@@ -21,15 +21,6 @@
21
21
  "type": "string"
22
22
  }
23
23
  },
24
- {
25
- "name": "useSynonym",
26
- "in": "query",
27
- "description": "Whether to expand q with synonym dictionary terms (default: true)",
28
- "schema": {
29
- "type": "boolean",
30
- "default": true
31
- }
32
- },
33
24
  {
34
25
  "name": "page",
35
26
  "in": "query",