fmea-api-mcp-server 1.1.21 → 1.1.24

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.
@@ -1 +1 @@
1
- {"DELETE:/api/v2/admin/api-keys/{id}":{"path":"/api/v2/admin/api-keys/{id}","method":"DELETE","operationId":"deactivate","summary":"Deactivate API key","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.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"DELETE:/api/v2/admin/api-keys/user/{userid}":{"path":"/api/v2/admin/api-keys/user/{userid}","method":"DELETE","operationId":"deactivateByUserId","summary":"Deactivate API keys by user ID","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.","tags":[],"parameters":[{"name":"userid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/admin/api-keys/stats":{"path":"/api/v2/admin/api-keys/stats","method":"GET","operationId":"getStats","summary":"Get API key statistics","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.","tags":[],"parameters":[],"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/admin/api-keys":{"path":"/api/v2/admin/api-keys","method":"GET","operationId":"list_3","summary":"List API keys (Admin)","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.","tags":[],"parameters":[{"name":"userid","in":"query","schema":{"type":"string"}},{"name":"isActive","in":"query","schema":{"type":"boolean"}},{"name":"expiredOnly","in":"query","schema":{"type":"boolean"}},{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":1}},{"name":"size","in":"query","schema":{"type":"integer","format":"int32","default":20}}],"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/admin/apikeys/logs":{"path":"/api/v2/admin/apikeys/logs","method":"GET","operationId":"getAuditLogs","summary":"Get API key audit logs","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.","tags":[],"parameters":[{"name":"adminUserid","in":"query","schema":{"type":"string"}},{"name":"targetUserid","in":"query","schema":{"type":"string"}},{"name":"action","in":"query","schema":{"type":"string"}},{"name":"startDate","in":"query","schema":{"type":"string"}},{"name":"endDate","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":1}},{"name":"size","in":"query","schema":{"type":"integer","format":"int32","default":20}}],"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/api-keys":{"path":"/api/v2/api-keys","method":"GET","operationId":"list_4","summary":"List API keys","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.","tags":[],"parameters":[],"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"POST:/api/v2/api-keys":{"path":"/api/v2/api-keys","method":"POST","operationId":"create_1","summary":"Create API key","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.","tags":[],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"keyName":{"type":"string"},"expiryDays":{"type":"integer","format":"int32"},"userLevel":{"type":"string","enum":["A","N","R"]}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"DELETE:/api/v2/api-keys/{id}":{"path":"/api/v2/api-keys/{id}","method":"DELETE","operationId":"delete_1","summary":"Delete API key","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.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"GET:/api/v2/api-keys/{id}/logs":{"path":"/api/v2/api-keys/{id}/logs","method":"GET","operationId":"getLogs","summary":"Get API key usage logs","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.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"startDate","in":"query","schema":{"type":"string"}},{"name":"endDate","in":"query","schema":{"type":"string"}},{"name":"endpoint","in":"query","schema":{"type":"string"}},{"name":"statusCode","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","schema":{"type":"integer","format":"int32","default":20}}],"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/api-keys/{id}/logs/summary":{"path":"/api/v2/api-keys/{id}/logs/summary","method":"GET","operationId":"getLogsSummary","summary":"Get API key logs summary","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.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"startDate","in":"query","schema":{"type":"string"}},{"name":"endDate","in":"query","schema":{"type":"string"}}],"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"POST:/api/v2/api-keys/{id}/regenerate":{"path":"/api/v2/api-keys/{id}/regenerate","method":"POST","operationId":"regenerate","summary":"Regenerate API key","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.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"expiryDate":{"type":"string","format":"date"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"POST:/api/v2/auth/change-password":{"path":"/api/v2/auth/change-password","method":"POST","operationId":"changePassword_1","summary":"Change password","description":"Changes a user password and returns the current legacy placeholder response (null).","tags":["Auth"],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object"}}}}}},"POST:/api/v2/auth/login":{"path":"/api/v2/auth/login","method":"POST","operationId":"login_1","summary":"Login","description":"Authenticates credentials and returns access/refresh tokens with user details.","tags":["Auth"],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"required":["password","userId"],"type":"object","properties":{"userId":{"type":"string"},"password":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"accessToken":{"type":"string"},"refreshToken":{"type":"string"},"tokenType":{"type":"string","enum":["BASIC","BEARER"]},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"englishName":{"type":"string"},"email":{"type":"string"},"department":{"type":"string"},"division":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"}}},"userLevel":{"type":"string","enum":["ADMIN","NORMAL","READER"]},"creationDate":{"type":"string","format":"date-time"},"lastPasswordChangeDate":{"type":"string","format":"date-time"},"useAccessibleDivisions":{"type":"integer"},"accessibleDivisions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"}}}},"encryptedPassword":{"type":"string"}}}}}}}}}},"POST:/api/v2/auth/logout":{"path":"/api/v2/auth/logout","method":"POST","operationId":"logout_1","summary":"Logout","description":"Invalidates the refresh token for the current user session and returns the legacy result.","tags":["Auth"],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"required":["refreshToken"],"type":"object","properties":{"refreshToken":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"string"}}}}}},"POST:/api/v2/auth/password-reset-request":{"path":"/api/v2/auth/password-reset-request","method":"POST","operationId":"passwordResetRequest_1","summary":"Request password reset","description":"Submits a password reset request and returns the current legacy placeholder response (null).","tags":["Auth"],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object"}}}}}},"POST:/api/v2/auth/refresh":{"path":"/api/v2/auth/refresh","method":"POST","operationId":"refresh_1","summary":"Refresh access token","description":"Validates a refresh token and issues a new token response with access/refresh tokens.","tags":["Auth"],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"required":["refreshToken"],"type":"object","properties":{"refreshToken":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"accessToken":{"type":"string"},"refreshToken":{"type":"string"},"tokenType":{"type":"string","enum":["BASIC","BEARER"]},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"englishName":{"type":"string"},"email":{"type":"string"},"department":{"type":"string"},"division":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"}}},"userLevel":{"type":"string","enum":["ADMIN","NORMAL","READER"]},"creationDate":{"type":"string","format":"date-time"},"lastPasswordChangeDate":{"type":"string","format":"date-time"},"useAccessibleDivisions":{"type":"integer"},"accessibleDivisions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"}}}},"encryptedPassword":{"type":"string"}}}}}}}}}},"GET:/api/v2/projects/{projectId}/block-diagrams":{"path":"/api/v2/projects/{projectId}/block-diagrams","method":"GET","operationId":"list_5","summary":"List block diagrams","description":"Returns block diagrams in the project. When search is provided, keyword matching is applied across block diagram fields.","tags":["Block Diagram"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"search","in":"query","description":"Block diagram keyword search (trimmed, max 100 characters)","schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["FUNCTION","STRUCTURE","FUNCTION_STRUCTURE","STRUCTURE_FUNCTION","PROCESS","SUPER_SYSTEM","FUNCTION_ANALYSIS"]},"alias":{"type":"string"},"order":{"type":"integer"},"description":{"type":"string"},"numberFormat":{"type":"string"}}}}}}}}},"GET:/api/v2/projects/{projectId}/block-diagrams/{blockId}/nodes":{"path":"/api/v2/projects/{projectId}/block-diagrams/{blockId}/nodes","method":"GET","operationId":"getNodes","summary":"Get block nodes","description":"Returns all nodes in the target block diagram.","tags":["Block Diagram"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"blockId","in":"path","description":"Block diagram ID","required":true,"schema":{"type":"string"}},{"name":"view","in":"query","description":"Response view type (list|tree)","schema":{"type":"string","default":"list"}},{"name":"search","in":"query","description":"Block node keyword search (trimmed, max 100 characters)","schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object"}}}}}},"PUT:/api/v2/projects/{projectId}/block-diagrams/{blockId}/nodes":{"path":"/api/v2/projects/{projectId}/block-diagrams/{blockId}/nodes","method":"PUT","operationId":"saveNodes_1","summary":"Save block nodes","description":"Creates, updates, and deletes block nodes in a single request.","tags":["Block Diagram"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"blockId","in":"path","description":"Block diagram ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"clientId":{"type":"string"},"parentId":{"type":"string"},"clientParentId":{"type":"string"},"referencedId":{"type":"string"},"function":{"type":"string"},"item":{"type":"string"},"requirement":{"type":"string"},"type":{"type":"string","enum":["FUNCTION","PART","SUB_FUNCTION","ASSEMBLY","NEW_CHANGE_ASSEMBLY","NEW_CHANGE_PART","NEW_CHANGE_PROCESS","SUPER_SYSTEM","TARGET"]},"order":{"type":"integer","format":"int32"},"processNumber":{"type":"string"},"processFlowChartName":{"type":"string"},"processFlowChartSymbol":{"type":"string"}}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"clientId":{"type":"string"},"id":{"type":"string"},"target":{"type":"string","enum":["WORKSHEET_ID","FAILURE_MODE_WORKSHEET_ID","WORKSHEET_ROW_ID","BLOCK_NODE_ID","BLOCK_REFERENCED_ID","FMM_OBJECT_ID"]}}}}}}}}},"GET:/api/v2/projects/{projectId}/block-diagrams/{blockId}/nodes/tree":{"path":"/api/v2/projects/{projectId}/block-diagrams/{blockId}/nodes/tree","method":"GET","operationId":"getNodesTree","summary":"Get block nodes tree","description":"Legacy endpoint kept for backward compatibility. Prefer GET /nodes?view=tree.","tags":["Block Diagram"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"blockId","in":"path","description":"Block diagram ID","required":true,"schema":{"type":"string"}},{"name":"search","in":"query","description":"Block node keyword search (trimmed, max 100 characters)","schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"parentId":{"type":"string"},"referencedId":{"type":"string"},"function":{"type":"string"},"item":{"type":"string"},"requirement":{"type":"string"},"type":{"type":"string","enum":["SUB_FUNCTION","NEW_CHANGE_ASSEMBLY","NEW_CHANGE_PART","TARGET"]},"order":{"type":"integer"},"processNumber":{"type":"string"},"processFlowChartName":{"type":"string"},"processFlowChartSymbol":{"type":"string"}}}}}}},"deprecated":true},"GET:/api/v2/projects/{projectId}/block-diagrams-excel/{blockId}":{"path":"/api/v2/projects/{projectId}/block-diagrams-excel/{blockId}","method":"GET","operationId":"getDownloadLink","summary":"Get excel export download link","description":"Returns a downloadable URI for block diagram Excel export.","tags":["Block Diagram Excel"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"blockId","in":"path","description":"Block diagram ID","required":true,"schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"fileName":{"type":"string"},"downloadUri":{"type":"string"}}}}}}}},"GET:/api/v2/projects/{projectId}/block-diagrams-excel/{uuid}/data":{"path":"/api/v2/projects/{projectId}/block-diagrams-excel/{uuid}/data","method":"GET","operationId":"getData","x-dependency-warning":"REQUIRES PRIOR FILE UPLOAD via [POST /api/v2/files]. The {uuid} parameter is the file ID returned by the upload endpoint.","summary":"Get parsed excel data","description":"Returns parsed block node data by upload UUID.","tags":["Block Diagram Excel"],"parameters":[{"name":"uuid","in":"path","description":"Upload UUID","required":true,"schema":{"type":"string"}},{"name":"startRowNumber","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"level","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"item","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"function","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"requirement","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"type","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"processNumber","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"processFlowChartSymbol","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"processFlowChartName","in":"query","schema":{"type":"integer","format":"int32"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"rowNumber":{"type":"integer"},"level":{"type":"integer"},"function":{"type":"string"},"item":{"type":"string"},"requirement":{"type":"string"},"type":{"type":"string","enum":["SUB_FUNCTION","NEW_CHANGE_ASSEMBLY","NEW_CHANGE_PART","TARGET"]},"order":{"type":"string"},"processNumber":{"type":"string"},"processFlowChartName":{"type":"string"},"processFlowChartSymbol":{"type":"string"}}}}}}}}},"GET:/api/v2/projects/{projectId}/block-diagrams/{blockDiagramId}/failure-modes/{failureModeId}":{"path":"/api/v2/projects/{projectId}/block-diagrams/{blockDiagramId}/failure-modes/{failureModeId}","method":"GET","operationId":"get","summary":"Get failure mode details","description":"Returns a failure mode by ID. If search is provided, resolves by failure mode name within the block diagram.","tags":["Failure Mode"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"blockDiagramId","in":"path","description":"Block diagram ID","required":true,"schema":{"type":"string"}},{"name":"failureModeId","in":"path","description":"Failure mode ID","required":true,"schema":{"type":"string"}},{"name":"search","in":"query","description":"Failure mode name keyword","schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"DELETE:/api/v2/projects/{projectId}/block-diagrams/{blockDiagramId}/failure-modes/{failureModeId}":{"path":"/api/v2/projects/{projectId}/block-diagrams/{blockDiagramId}/failure-modes/{failureModeId}","method":"DELETE","operationId":"deleteFailureMode","summary":"Delete failure mode","description":"Deletes a predefined failure mode from a specific block diagram within a project. This destructive operation permanently removes the failure mode and any associated FMM diagram structural data from the component. Use this endpoint to clean up incorrect entries, remove obsolete failure definitions, or restructure the block diagram's failure analysis. Since this action is irreversible, it should be called only after user confirmation. It is essential for maintaining accurate and up-to-date Failure Mode and Effects Analysis (FMEA) records.","tags":["Failure Mode"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"blockDiagramId","in":"path","description":"Block diagram ID","required":true,"schema":{"type":"string"}},{"name":"failureModeId","in":"path","description":"Failure mode ID","required":true,"schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"GET:/api/v2/template/block-diagrams/{blockDiagramType}/sheet-headers":{"path":"/api/v2/template/block-diagrams/{blockDiagramType}/sheet-headers","method":"GET","operationId":"getBlockDiagramSheetHeaders","summary":"Get Block Diagram Excel Sheet Headers (v2)","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.","tags":[],"parameters":[{"name":"blockDiagramType","in":"path","required":true,"schema":{"type":"string","enum":["FUNCTION","STRUCTURE","FUNCTION_STRUCTURE","STRUCTURE_FUNCTION","PROCESS","SUPER_SYSTEM","FUNCTION_ANALYSIS"]}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"POST:/api/v2/projects/{projectId}/block-diagrams/{blockDiagramId}/failure-modes":{"path":"/api/v2/projects/{projectId}/block-diagrams/{blockDiagramId}/failure-modes","method":"POST","summary":"Create failure modes","description":"Creates one or more failure modes for the target block diagram.","tags":["Failure Mode"],"operationId":"create_2","parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"blockDiagramId","in":"path","description":"Block diagram ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"nodeId":{"type":"string"},"name":{"type":"string"},"id":{"type":"string"}}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/projects/{projectId}/block-diagrams/{blockId}/nodes/{nodeId}/failure-modes":{"path":"/api/v2/projects/{projectId}/block-diagrams/{blockId}/nodes/{nodeId}/failure-modes","method":"GET","operationId":"listNodeFailureModes","summary":"List node failure modes","description":"Returns failure modes mapped to the target node. Optional search applies keyword filtering.","tags":["Block Diagram"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"blockId","in":"path","description":"Block diagram ID","required":true,"schema":{"type":"string"}},{"name":"nodeId","in":"path","description":"Block node ID","required":true,"schema":{"type":"string"}},{"name":"search","in":"query","description":"Failure mode keyword search (trimmed, max 100 characters)","schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"blockNodeId":{"type":"string"},"referencedBlockNodeId":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"fmmDiagramType":{"type":"string","enum":["UNUSED"]},"rank":{"type":"string"},"complete":{"type":"string"},"transferFmmObject":{"type":"integer"}}}}}}}}},"DELETE:/api/v2/condition-library/{type}/{serial}":{"path":"/api/v2/condition-library/{type}/{serial}","method":"DELETE","operationId":"deleteConditionLibraryNode","summary":"Delete condition library node","description":"Deletes the target node and its subtree for the requested type. Root node deletion is not allowed.","tags":["Condition Library"],"parameters":[{"name":"type","in":"path","description":"Condition library type (stress|design|process)","required":true,"schema":{"type":"string","enum":["stress","design","process"]}},{"name":"serial","in":"path","description":"Condition library serial","required":true,"schema":{"minimum":0,"type":"integer","format":"int32"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/condition-library/{type}/tree":{"path":"/api/v2/condition-library/{type}/tree","method":"GET","operationId":"getConditionLibraryTree","summary":"Get condition library tree","description":"Returns the condition library hierarchy for the requested type. The response includes the root node and nested children ordered by rank.","tags":["Condition Library"],"parameters":[{"name":"type","in":"path","description":"Condition library type (stress|design|process)","required":true,"schema":{"type":"string","enum":["stress","design","process"]}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"serial":{"type":"integer"},"type":{"type":"string","enum":["STRESS","DESIGN","PROCESS"]},"title":{"type":"string"},"tag":{"type":"string"},"parentTag":{"type":"string"},"depth":{"type":"integer"},"rank":{"type":"integer"}}}}}}}},"PATCH:/api/v2/condition-library/{type}/{serial}":{"path":"/api/v2/condition-library/{type}/{serial}","method":"PATCH","operationId":"updateConditionLibraryNode","summary":"Update condition library node","description":"Updates the node title by serial for the requested type. Duplicate titles under the same parent are rejected.","tags":["Condition Library"],"parameters":[{"name":"type","in":"path","description":"Condition library type (stress|design|process)","required":true,"schema":{"type":"string","enum":["stress","design","process"]}},{"name":"serial","in":"path","description":"Condition library serial","required":true,"schema":{"minimum":0,"type":"integer","format":"int32"}}],"requestBody":{"content":{"application/json":{"schema":{"required":["title"],"type":"object","properties":{"title":{"type":"string"}}}}},"required":true},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"serial":{"type":"integer"},"type":{"type":"string","enum":["STRESS","DESIGN","PROCESS"]},"title":{"type":"string"},"tag":{"type":"string"},"parentTag":{"type":"string"},"depth":{"type":"integer"},"rank":{"type":"integer"}}}}}}}},"POST:/api/v2/condition-library/{type}":{"path":"/api/v2/condition-library/{type}","method":"POST","operationId":"createConditionLibraryNode","summary":"Create condition library node","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).","tags":["Condition Library"],"parameters":[{"name":"type","in":"path","description":"Condition library type (stress|design|process)","required":true,"schema":{"type":"string","enum":["stress","design","process"]}}],"requestBody":{"content":{"application/json":{"schema":{"required":["title"],"type":"object","properties":{"title":{"type":"string"},"parentTag":{"type":"string"}}}}},"required":true},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"PUT:/api/v2/condition-library/{type}/order":{"path":"/api/v2/condition-library/{type}/order","method":"PUT","operationId":"updateConditionLibraryOrder","summary":"Update condition library order","description":"Updates rank values for sibling nodes in the requested type. All items must belong to the same parent and include serial/rank pairs.","tags":["Condition Library"],"parameters":[{"name":"type","in":"path","description":"Condition library type (stress|design|process)","required":true,"schema":{"type":"string","enum":["stress","design","process"]}}],"requestBody":{"content":{"application/json":{"schema":{"required":["items"],"type":"object","properties":{"items":{"maxItems":2147483647,"minItems":1,"type":"array","items":{"required":["rank","serial"],"type":"object","properties":{"serial":{"type":"integer","format":"int32"},"rank":{"type":"integer","format":"int32"}}}}}}}},"required":true},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"POST:/api/v2/condition-library-excel/{type}/{uuid}":{"path":"/api/v2/condition-library-excel/{type}/{uuid}","method":"POST","operationId":"importConditionLibraryFromExcel","summary":"Import condition library nodes from Excel","description":"Imports condition titles from an uploaded Excel file into the requested type and parent node. Blank titles and duplicate sibling titles are ignored.","tags":["Condition Library Excel"],"parameters":[{"name":"type","in":"path","description":"Condition library type (stress|design|process)","required":true,"schema":{"type":"string","enum":["stress","design","process"]}},{"name":"uuid","in":"path","description":"Upload UUID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"parentTag":{"type":"string"},"sheetIndex":{"type":"integer","format":"int32"},"titleColumnIndex":{"type":"integer","format":"int32"},"startRowNumber":{"type":"integer","format":"int32"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}},"x-dependency-warning":"REQUIRES PRIOR FILE UPLOAD via [POST /api/v2/files]. The {uuid} parameter is the file identifier returned by the upload endpoint."},"GET:/api/v2/divisions":{"path":"/api/v2/divisions","method":"GET","summary":"Search divisions","operationId":"list_6","description":"Returns paged divisions filtered by division name.","tags":["Division"],"parameters":[{"name":"search","in":"query","description":"Division name keyword","schema":{"type":"string"}},{"name":"page","in":"query","description":"Page number (starts from 1)","schema":{"type":"integer","format":"int32","default":1}},{"name":"size","in":"query","description":"Page size (max 100, default 50)","schema":{"type":"integer","format":"int32","default":50}}],"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"},"relatedDivisions":{"type":"array","items":{"type":"object","description":"(circular: DivisionDTO)"}}}}},"page":{"type":"integer"},"size":{"type":"integer"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}}}}}}}},"GET:/api/v2/divisions/{divisionId}":{"path":"/api/v2/divisions/{divisionId}","method":"GET","summary":"Get division details","operationId":"get_1","description":"Retrieves detailed information for a specific division (organizational unit, department, business unit) using its unique identifier. Returns the complete division profile including metadata, hierarchy, and configuration settings. Use this endpoint when you need to fetch division details for display, editing, or as a reference in other operations. Common use cases include: populating division dropdowns, validating division access permissions, retrieving division context for projects or PFMEA records, and displaying organizational structure information.","tags":["Division"],"parameters":[{"name":"divisionId","in":"path","description":"Division ID to retrieve","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"},"relatedDivisions":{"type":"array","items":{"type":"object","description":"(circular: DivisionDTO)"}}}}}}}}},"GET:/api/v2/projects/{projectId}/documents/categories/{documentCategory}":{"path":"/api/v2/projects/{projectId}/documents/categories/{documentCategory}","method":"GET","operationId":"listByCategory","summary":"List documents by category","description":"Retrieves all documents belonging to a specific category within a project (Filter / Query by type). Use this endpoint when you need to fetch documents filtered by their document category type, such as input files, output reports, analysis results, or reference materials. The category parameter allows you to narrow down the document list to a specific classification, enabling targeted document retrieval and organization.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"documentCategory","in":"path","required":true,"schema":{"type":"string","enum":["SYSTEM_DEFINITION","WORKSHEET","BLOCK_DIAGRAM","FMM_DIAGRAM"]}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string","enum":["UPLOAD"]},"value":{"type":"string"},"path":{"type":"string"},"fileSize":{"type":"string"},"uploadDate":{"type":"string","format":"date"},"category":{"type":"string","enum":["SYSTEM_DEFINITION","WORKSHEET","BLOCK_DIAGRAM","FMM_DIAGRAM"]}}}}}}}}},"POST:/api/v2/projects/{projectId}/documents/categories/{documentCategory}":{"path":"/api/v2/projects/{projectId}/documents/categories/{documentCategory}","method":"POST","operationId":"add_1","summary":"Add document to category","description":"Creates and registers a new document entry within a specific category for a project (Upload / Create / Attach file). Use this endpoint to add documents such as analysis reports, input data files, or reference materials to the project. The document will be classified under the specified category, enabling organized storage and retrieval. Requires project member role with NORMAL user level permissions.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"documentCategory","in":"path","required":true,"schema":{"type":"string","enum":["SYSTEM_DEFINITION","WORKSHEET","BLOCK_DIAGRAM","FMM_DIAGRAM"]}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"uuid":{"type":"string"},"value":{"type":"string"},"path":{"type":"string"},"type":{"type":"string","enum":["UPLOAD","URL"]}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string","enum":["UPLOAD"]},"value":{"type":"string"},"path":{"type":"string"},"fileSize":{"type":"string"},"uploadDate":{"type":"string","format":"date"},"category":{"type":"string","enum":["SYSTEM_DEFINITION","WORKSHEET","BLOCK_DIAGRAM","FMM_DIAGRAM"]}}}}}}}},"GET:/api/v2/projects/{projectId}/documents/{documentId}":{"path":"/api/v2/projects/{projectId}/documents/{documentId}","method":"GET","operationId":"get_7","summary":"Get document by ID","description":"Fetches detailed information for a specific document using its unique identifier (Retrieve / Fetch / View document details). Use this endpoint to obtain complete document metadata including name, category, path, creation timestamp, and associated file information. This is essential when you need to display document details, verify document existence, or access specific document properties before performing further operations like download or deletion.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"documentId","in":"path","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string","enum":["UPLOAD"]},"value":{"type":"string"},"path":{"type":"string"},"fileSize":{"type":"string"},"uploadDate":{"type":"string","format":"date"},"category":{"type":"string","enum":["SYSTEM_DEFINITION","WORKSHEET","BLOCK_DIAGRAM","FMM_DIAGRAM"]}}}}}}}},"DELETE:/api/v2/projects/{projectId}/documents/{documentId}":{"path":"/api/v2/projects/{projectId}/documents/{documentId}","method":"DELETE","operationId":"delete_5","summary":"Delete document","description":"Permanently removes a document from the project using its unique identifier (Remove / Erase document). This operation deletes the document record and disassociates it from the project. Use with caution as this action cannot be undone. Requires project member role with NORMAL user level permissions. Ensure you have the correct document ID before initiating deletion to avoid accidental data loss.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"documentId","in":"path","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"GET:/api/v2/projects/{projectId}/documents/{documentId}/download":{"path":"/api/v2/projects/{projectId}/documents/{documentId}/download","method":"GET","operationId":"getDownloadLink_2","summary":"Get document download link","description":"Generates a secure download URL for accessing the actual file associated with a document (Download file / Get file URL). Use this endpoint to obtain a temporary, authenticated link that allows users to download the document file. The link includes necessary security tokens to ensure only authorized users can access the file. This is the standard method for retrieving document files after you have identified the document ID through listing or search operations.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"documentId","in":"path","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"fileName":{"type":"string"},"downloadUri":{"type":"string"}}}}}}}},"GET:/api/v2/projects/{projectId}/documents":{"path":"/api/v2/projects/{projectId}/documents","method":"GET","operationId":"list_10","summary":"List all Documents","description":"Retrieves a comprehensive list of all documents associated with a specific project (Get all files / Fetch project documents / Query document library). Use this endpoint when you need to view, browse, or display the complete collection of documents within a project, including all categories and types. The response includes document metadata such as names, categories, paths, and timestamps, enabling users to navigate and manage the project document repository effectively.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string","enum":["UPLOAD"]},"value":{"type":"string"},"path":{"type":"string"},"fileSize":{"type":"string"},"uploadDate":{"type":"string","format":"date"},"category":{"type":"string","enum":["SYSTEM_DEFINITION","WORKSHEET","BLOCK_DIAGRAM","FMM_DIAGRAM"]}}}}}}}}},"GET:/api/v2/projects/{projectId}/documents/categories/{documentCategory}/path/{documentPath}":{"path":"/api/v2/projects/{projectId}/documents/categories/{documentCategory}/path/{documentPath}","method":"GET","operationId":"listByCategoryAndPath","summary":"List documents by category and path","description":"Fetches documents matching both a specific category and file path within a project (Filter by type and location / Query documents in folder). Use this endpoint for precise document filtering when you need to retrieve documents from a specific directory or subfolder within a category. The path parameter enables hierarchical navigation, allowing you to access documents organized in nested folder structures. This is particularly useful for browsing documents within specific subdirectories or locations.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"documentCategory","in":"path","required":true,"schema":{"type":"string","enum":["SYSTEM_DEFINITION","WORKSHEET","BLOCK_DIAGRAM","FMM_DIAGRAM"]}},{"name":"documentPath","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string","enum":["UPLOAD"]},"value":{"type":"string"},"path":{"type":"string"},"fileSize":{"type":"string"},"uploadDate":{"type":"string","format":"date"},"category":{"type":"string","enum":["SYSTEM_DEFINITION","WORKSHEET","BLOCK_DIAGRAM","FMM_DIAGRAM"]}}}}}}}}},"GET:/api/v2/excel/{uuid}":{"path":"/api/v2/excel/{uuid}","method":"GET","summary":"Parse all sheets in Excel file","description":"Extracts and returns ALL worksheets from an uploaded Excel file (.xlsx, .xls). Use this endpoint when you need complete workbook data including multiple sheets. The endpoint parses every tab/worksheet in the Excel file and returns them as a structured list with sheet metadata, row data, and cell values. This is ideal for bulk data extraction, complete workbook analysis, or when the sheet structure is unknown beforehand. Returns a list of POISheet objects containing sheet names, indices, and grid data. Requires valid file UUID from prior upload.","tags":["excel"],"operationId":"parseAll","x-dependency-warning":"REQUIRES PRIOR FILE UPLOAD via [POST /api/v2/files]. The {uuid} parameter is the file ID returned by the upload endpoint.","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}},{"name":"startRowNumber","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"reindexFromZero","in":"query","schema":{"type":"boolean","default":true}}],"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/excel/{uuid}/sheets/{sheetIndex}":{"path":"/api/v2/excel/{uuid}/sheets/{sheetIndex}","method":"GET","summary":"Parse specific sheet in Excel file","description":"Extracts and returns a SINGLE worksheet from an uploaded Excel file by its zero-based index. Use this endpoint for targeted data retrieval when you know which specific tab/worksheet you need. More efficient than parsing all sheets when working with large workbooks or when only specific sheet data is required. The endpoint returns a POISheet object containing the sheet name, index, and complete grid data with cell values. Ideal for incremental processing, specific tab extraction, or reducing payload size. Sheet index starts at 0 (first sheet). Requires valid file UUID from prior upload.","tags":["excel"],"operationId":"parseSheet","x-dependency-warning":"REQUIRES PRIOR FILE UPLOAD via [POST /api/v2/files]. The {uuid} parameter is the file ID returned by the upload endpoint.","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}},{"name":"sheetIndex","in":"path","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"startRowNumber","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"reindexFromZero","in":"query","schema":{"type":"boolean","default":true}}],"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"POST:/api/v2/excel/generate":{"path":"/api/v2/excel/generate","method":"POST","summary":"Generate Excel File","description":"Generates a downloadable Excel (.xlsx) file programmatically based on user-provided column definitions and grid data payloads. Use this endpoint to dynamically construct custom spreadsheet reports, export tabular analysis results, or create structured Excel files from raw JSON arrays. Ideal for custom FMEA reporting, bulk data compilation, and on-the-fly spreadsheet generation. (Create Excel / Export to XLSX / Build Spreadsheet / Generate Report).","tags":[],"operationId":"generate","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"worksheetName":{"type":"string"},"columns":{"type":"array","items":{"type":"object","properties":{"width":{"type":"integer","format":"int32"},"type":{"type":"string"}}}},"rowsMeta":{"type":"object","additionalProperties":{"type":"object"}},"data":{"type":"array","items":{"type":"array","items":{"type":"object"}}},"mergeCells":{"type":"object","additionalProperties":{"type":"array","items":{"type":"integer","format":"int32"}}}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"PUT:/api/v2/projects/{projectId}/failure-modes/{failureModeId}/fmm-diagram":{"path":"/api/v2/projects/{projectId}/failure-modes/{failureModeId}/fmm-diagram","method":"PUT","operationId":"updateDiagram","summary":"Update FMM diagram","description":"Updates an existing FMM diagram for the target failure mode.","tags":["FMM Diagram"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"failureModeId","in":"path","description":"Failure mode ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"blockDiagramId":{"type":"string"},"fmmDiagramType":{"type":"string","enum":["UNUSED","NOT_SELECTED","TYPE_A","TYPE_C"]},"fmmBlockDiagramType":{"type":"string","enum":["Function","Structure","FunctionStructure","StructureFunction","Process"]},"fmeaType":{"type":"string","enum":["Design","Process","Equipment","FA","FTA","CPlan"]},"completed":{"type":"boolean"},"objects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"clientId":{"type":"string"},"oldId":{"type":"string"},"parentId":{"type":"string"},"clientParentId":{"type":"string"},"oldParentId":{"type":"string"},"referencedId":{"type":"string"},"objectType":{"type":"string","enum":["FAILURE_MODE","EFFECT","ITEM","EXTERNAL_ITEM","GROUP","CAUSE_U","CAUSE_I","STRESS","DESIGN","PROCESS"]},"name":{"type":"string"},"order":{"type":"integer","format":"int32"},"sourceId":{"type":"string"},"highItem_unused":{"type":"string"},"processType":{"type":"string"}}}},"deletedObjectIds":{"type":"array","items":{"type":"string"}}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"POST:/api/v2/projects/{projectId}/failure-modes/{failureModeId}/fmm-diagram":{"path":"/api/v2/projects/{projectId}/failure-modes/{failureModeId}/fmm-diagram","method":"POST","summary":"Create FMM diagram","description":"Creates an FMM diagram for the target failure mode.","tags":["FMM Diagram"],"operationId":"createDiagram","parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"failureModeId","in":"path","description":"Failure mode ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"blockDiagramId":{"type":"string"},"failureModeName":{"type":"string"},"blockName":{"type":"string"},"fmmDiagramType":{"type":"string","enum":["UNUSED","NOT_SELECTED","TYPE_A","TYPE_C"]},"objects":{"type":"array","items":{"type":"object","properties":{"type":{"type":"integer","format":"int32"},"name":{"type":"string"},"parentId":{"type":"string"},"clientId":{"type":"string"},"blockNodeId":{"type":"string"}}}}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/projects/{projectId}/failure-modes/{failureModeId}/fmm-diagram/nodes":{"path":"/api/v2/projects/{projectId}/failure-modes/{failureModeId}/fmm-diagram/nodes","method":"GET","operationId":"getNodes_1","summary":"Get FMM diagram nodes","description":"Returns FMM diagram nodes in list or tree view. Optional search parameters filter nodes and resolve diagrams by keyword.","tags":["FMM Diagram"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"failureModeId","in":"path","description":"Failure mode ID","required":true,"schema":{"type":"string"}},{"name":"view","in":"query","description":"Response view type (list|tree)","schema":{"type":"string","default":"list"}},{"name":"search","in":"query","description":"Node keyword search (trimmed, max 100 characters)","schema":{"type":"string"}},{"name":"failureModeSearch","in":"query","description":"Failure mode keyword search (trimmed, max 100 characters)","schema":{"type":"string"}},{"name":"type","in":"query","description":"Node type exact-match filter","schema":{"type":"string","enum":["FAILURE_MODE","EFFECT","ITEM","EXTERNAL_ITEM","GROUP","CAUSE_U","CAUSE_I","STRESS","DESIGN","PROCESS"]}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"projectId":{"type":"string"},"id":{"type":"string"},"failureModeId":{"type":"string"},"parentId":{"type":"string"},"type":{"type":"string","enum":["EFFECT","ITEM","EXTERNAL_ITEM","GROUP","CAUSE_U","CAUSE_I","STRESS","DESIGN","PROCESS"]},"name":{"type":"string"},"highItemName_unused":{"type":"string"},"blockNodeId":{"type":"string"},"fmeaType":{"type":"string"},"order":{"type":"integer"},"sourceId":{"type":"string"},"processType":{"type":"string"}}}}}}}}},"POST:/api/v2/files":{"path":"/api/v2/files","method":"POST","operationId":"upload","summary":"Upload files","description":"Initiates file upload by accepting one or more files via multipart/form-data and storing them in a temporary system folder. Returns a list of upload information objects, each containing a unique UUID identifier, original filename, and file size. The returned UUID serves as a temporary file reference that must be used in subsequent processing endpoints (e.g., Excel import, document attachment, data analysis workflows). This is the mandatory first step for any operation requiring file input. Supports batch upload of multiple files in a single request. Alternative terms: file transmission, document submission, attachment upload, bulk file transfer.","tags":[],"parameters":[],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"files":{"type":"array","items":{"type":"object","properties":{"contentDisposition":{"type":"object","properties":{"type":{"type":"string"},"parameters":{"type":"object","additionalProperties":{"type":"string"}},"fileName":{"type":"string"},"creationDate":{"type":"string","format":"date-time"},"modificationDate":{"type":"string","format":"date-time"},"readDate":{"type":"string","format":"date-time"},"size":{"type":"integer","format":"int64"}}},"entity":{"type":"object"},"headers":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"mediaType":{"type":"object","properties":{"type":{"type":"string"},"subtype":{"type":"string"},"parameters":{"type":"object","additionalProperties":{"type":"string"}},"wildcardSubtype":{"type":"boolean"},"wildcardType":{"type":"boolean"}}},"messageBodyWorkers":{"type":"object"},"parent":{"type":"object","properties":{"contentDisposition":{"type":"object","properties":{"type":{"type":"string"},"parameters":{"type":"object","additionalProperties":{"type":"string"}},"fileName":{"type":"string"},"creationDate":{"type":"string","format":"date-time"},"modificationDate":{"type":"string","format":"date-time"},"readDate":{"type":"string","format":"date-time"},"size":{"type":"integer","format":"int64"}}},"entity":{"type":"object"},"headers":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"mediaType":{"type":"object","properties":{"type":{"type":"string"},"subtype":{"type":"string"},"parameters":{"type":"object","additionalProperties":{"type":"string"}},"wildcardSubtype":{"type":"boolean"},"wildcardType":{"type":"boolean"}}},"messageBodyWorkers":{"type":"object"},"parent":{"type":"object"},"providers":{"type":"object"},"bodyParts":{"type":"array","items":{"type":"object","properties":{"contentDisposition":{"type":"object","properties":{"type":{"type":"string"},"parameters":{"type":"object","additionalProperties":{"type":"string"}},"fileName":{"type":"string"},"creationDate":{"type":"string","format":"date-time"},"modificationDate":{"type":"string","format":"date-time"},"readDate":{"type":"string","format":"date-time"},"size":{"type":"integer","format":"int64"}}},"entity":{"type":"object"},"headers":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"mediaType":{"type":"object","properties":{"type":{"type":"string"},"subtype":{"type":"string"},"parameters":{"type":"object","additionalProperties":{"type":"string"}},"wildcardSubtype":{"type":"boolean"},"wildcardType":{"type":"boolean"}}},"messageBodyWorkers":{"type":"object"},"parent":{"type":"object"},"providers":{"type":"object"},"parameterizedHeaders":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"parameters":{"type":"object","additionalProperties":{"type":"string"}}}}}}}}},"parameterizedHeaders":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"parameters":{"type":"object","additionalProperties":{"type":"string"}}}}}}}},"providers":{"type":"object"},"name":{"type":"string"},"value":{"type":"string"},"simple":{"type":"boolean"},"formDataContentDisposition":{"type":"object","properties":{"type":{"type":"string"},"parameters":{"type":"object","additionalProperties":{"type":"string"}},"fileName":{"type":"string"},"creationDate":{"type":"string","format":"date-time"},"modificationDate":{"type":"string","format":"date-time"},"readDate":{"type":"string","format":"date-time"},"size":{"type":"integer","format":"int64"},"name":{"type":"string"}}},"parameterizedHeaders":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"parameters":{"type":"object","additionalProperties":{"type":"string"}}}}}}}}}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}},"x-dependency-warning":"This endpoint is an INITIATOR. Subsequent file processing endpoints (e.g., Excel import, data analysis) require the UUID returned by this endpoint. Store the returned UUIDs and pass them to consumer endpoints that accept {uuid} path parameters."},"GET:/api/v2/fourm":{"path":"/api/v2/fourm","method":"GET","operationId":"list_7","summary":"List 4M analysis items","description":"Retrieves all 4M (Man, Machine, Material, Environment) analysis items with optional filtering. Supports querying by project ID (projectId) and single or double tags (tag, secondTag) for targeted searches. Use this endpoint to browse, filter, or search for existing 4M analysis records within a project context. Returns a comprehensive list of analysis entries that can be further processed or displayed.","tags":[],"parameters":[{"name":"projectId","in":"query","schema":{"type":"string"}},{"name":"tag","in":"query","schema":{"type":"string"}},{"name":"secondTag","in":"query","schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"POST:/api/v2/fourm":{"path":"/api/v2/fourm","method":"POST","operationId":"create_3","summary":"Create 4M analysis item","description":"Creates a new 4M (Man, Machine, Material, Environment) analysis item in the system. Accepts analysis data including categorization by the four M dimensions (Man/Personnel, Machine/Equipment, Material/Resources, Environment/Conditions). Use this endpoint to initiate a new 4M analysis, register factors for quality or risk assessment, or document production variables. Returns the complete created object with system-generated ID.","tags":[],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string"},"tag":{"type":"string"},"secondTag":{"type":"string"},"category":{"type":"string","enum":["Man","Machine","Material","Environment"]},"workElement":{"type":"string"},"functionRequirement":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/fourm/{id}":{"path":"/api/v2/fourm/{id}","method":"GET","operationId":"get_2","summary":"Get 4M analysis item by ID","description":"Retrieves a specific 4M analysis item by its unique identifier (id). Use this endpoint to fetch full details of an existing analysis record for viewing, editing preparation, or detailed examination. Returns complete object including all four M dimensions (Man, Machine, Material, Environment) and associated metadata. Ideal for drill-down operations, detailed inspection, or populating edit forms.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"PUT:/api/v2/fourm/{id}":{"path":"/api/v2/fourm/{id}","method":"PUT","operationId":"update_2","summary":"Update 4M analysis item","description":"Modifies an existing 4M analysis item identified by its ID. Accepts partial or complete updates to the analysis data including changes to categorization, descriptions, or any of the four M dimensions (Man, Machine, Material, Environment). Use this endpoint to correct, enhance, or evolve analysis records over time. Returns the updated object reflecting all changes applied.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"category":{"type":"string","enum":["Man","Machine","Material","Environment"]},"workElement":{"type":"string"},"functionRequirement":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"DELETE:/api/v2/fourm/{id}":{"path":"/api/v2/fourm/{id}","method":"DELETE","operationId":"delete_2","summary":"Delete 4M analysis item","description":"Permanently removes a 4M analysis item from the system using its unique identifier. This operation is irreversible and will eliminate all associated data including the four M dimension classifications (Man, Machine, Material, Environment). Use with caution for removing obsolete or incorrect analysis records. Returns no content upon successful deletion (204 status).","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"PUT:/api/v2/projects/{projectId}/high-items":{"path":"/api/v2/projects/{projectId}/high-items","method":"PUT","operationId":"update_5","summary":"Batch upsert and reorder high items by project","description":"Updates the project high-item list with batch upsert semantics. Existing items are matched by sequence or title, ranks are recalculated by input order, and omitted items are removed.","tags":["High Items"],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"topItems":{"type":"array","items":{"type":"string"}},"sequences":{"type":"array","items":{"type":"string"}}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/projects":{"path":"/api/v2/projects","method":"GET","operationId":"list_8","summary":"List project summaries","description":"If divisionId is provided, returns division-scoped active projects. Otherwise returns all active projects. When search is provided, keyword matching is applied.","tags":["Project"],"parameters":[{"name":"divisionId","in":"query","description":"Division ID","schema":{"type":"integer","format":"int32"}},{"name":"includeRelated","in":"query","description":"Whether to include mapped related divisions when divisionId is provided","schema":{"type":"boolean"}},{"name":"search","in":"query","description":"Unified keyword (project, title, model, item)","schema":{"type":"string"}}],"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["DESIGN","PROCESS","EQUIPMENT","FA","FTA","CPLAN"]},"master":{"type":"boolean"},"name":{"type":"string"},"item":{"type":"string"},"model":{"type":"string"},"description":{"type":"string"},"leaderName":{"type":"string"},"startDate":{"type":"string","format":"date"},"dueDate":{"type":"string","format":"date"},"status":{"type":"string","enum":["IN_PROGRESS","REFUSED","SELF_COMPLETED"]},"completedDate":{"type":"string","format":"date"},"updateDueDate":{"type":"string","format":"date"},"divisionName":{"type":"string"},"divisionScope":{"type":"string"},"worksheetTemplateName":{"type":"string"}}}}}}}}},"GET:/api/v2/projects/{projectId}":{"path":"/api/v2/projects/{projectId}","method":"GET","operationId":"get_3","summary":"Get project details","description":"Fetches complete project information including metadata, configuration, and current status. Use this endpoint to retrieve detailed project data for viewing, editing, or auditing purposes. Supports retrieving any project the authenticated user has access to.","tags":["Project"],"parameters":[{"name":"projectId","in":"path","description":"Project ID to retrieve","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["DESIGN","PROCESS","EQUIPMENT","FA","FTA","CPLAN"]},"master":{"type":"boolean"},"label":{"type":"boolean"},"active":{"type":"boolean"},"projectClass":{"type":"string"},"systemFunction":{"type":"string"},"systemRequirement":{"type":"string"},"item":{"type":"string"},"model":{"type":"string"},"startDate":{"type":"string","format":"date"},"dueDate":{"type":"string","format":"date"},"completedDate":{"type":"string","format":"date"},"updateDueDate":{"type":"string","format":"date"},"evaluationCriteria":{"type":"string"},"description":{"type":"string"},"members":{"type":"array","items":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"department":{"type":"string"},"division":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"},"relatedDivisions":{"type":"array","items":{"type":"object","description":"(circular: DivisionDTO)"}}}}}},"role":{"type":"string","enum":["LEADER","MEMBER","REVIEWER","APPROVAL","COMPLETION_REVIEWER","NONE"]}}}},"useApproval":{"type":"boolean"},"score":{"type":"integer"},"status":{"type":"string","enum":["IN_PROGRESS","REFUSED","SELF_COMPLETED"]},"divisionId":{"type":"integer"},"worksheetTemplateId":{"type":"integer"}}}}}}}},"GET:/api/v2/projects/my":{"path":"/api/v2/projects/my","method":"GET","operationId":"getSummaryList","summary":"Search my projects","description":"Returns paged project summaries filtered by search, fmeaType, status, and sort.","tags":["Project"],"parameters":[{"name":"search","in":"query","description":"Unified keyword (project, title, model, item)","schema":{"type":"string"}},{"name":"fmeaType","in":"query","description":"FMEA type filter (DESIGN, PROCESS, EQUIPMENT, FA, FTA, CPLAN)","schema":{"type":"string","enum":["Design","Process","Equipment","FA","FTA","CPlan"]}},{"name":"status","in":"query","description":"Project status filter","schema":{"type":"string","enum":["IN_PROGRESS","REFUSED","SELF_COMPLETED","REVIEW","APPROVE","SCORE","COMPLETED","ASK_MODIFY_REVIEW","ASK_MODIFY_APPROVE","DELAY","NA"]}},{"name":"sort","in":"query","description":"Sort format: (project|name|type|status):(asc|desc)","schema":{"type":"string"}},{"name":"page","in":"query","description":"Page number (starts from 1)","schema":{"type":"integer","format":"int32","default":1}},{"name":"size","in":"query","description":"Page size (max 100)","schema":{"type":"integer","format":"int32","default":20}}],"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["DESIGN","PROCESS","EQUIPMENT","FA","FTA","CPLAN"]},"master":{"type":"boolean"},"name":{"type":"string"},"item":{"type":"string"},"model":{"type":"string"},"description":{"type":"string"},"leaderName":{"type":"string"},"startDate":{"type":"string","format":"date"},"dueDate":{"type":"string","format":"date"},"status":{"type":"string","enum":["IN_PROGRESS","REFUSED","SELF_COMPLETED"]},"completedDate":{"type":"string","format":"date"},"updateDueDate":{"type":"string","format":"date"},"divisionName":{"type":"string"},"divisionScope":{"type":"string"},"worksheetTemplateName":{"type":"string"}}}},"page":{"type":"integer"},"size":{"type":"integer"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}}}}}}}},"GET:/api/v2/projects/{projectId}/summary":{"path":"/api/v2/projects/{projectId}/summary","method":"GET","operationId":"getSummary","summary":"Get project summary","description":"Fetches a condensed overview of project information including key metrics, status, and essential metadata. Use this for quick project previews, dashboard widgets, or when full project details are not required. Optimized for performance with minimal data transfer.","tags":["Project"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["DESIGN","PROCESS","EQUIPMENT","FA","FTA","CPLAN"]},"master":{"type":"boolean"},"name":{"type":"string"},"item":{"type":"string"},"model":{"type":"string"},"description":{"type":"string"},"leaderName":{"type":"string"},"startDate":{"type":"string","format":"date"},"dueDate":{"type":"string","format":"date"},"status":{"type":"string","enum":["IN_PROGRESS","REFUSED","SELF_COMPLETED"]},"completedDate":{"type":"string","format":"date"},"updateDueDate":{"type":"string","format":"date"},"divisionName":{"type":"string"},"divisionScope":{"type":"string"},"worksheetTemplateName":{"type":"string"}}}}}}}},"GET:/api/v2/projects/{projectId}/members":{"path":"/api/v2/projects/{projectId}/members","method":"GET","operationId":"getMembers","summary":"List project members","description":"Returns project members. When search is provided, keyword matching is applied.","tags":["Project"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"search","in":"query","description":"Unified keyword (id, name, email, department, role)","schema":{"type":"string"}}],"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"department":{"type":"string"},"division":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"},"relatedDivisions":{"type":"array","items":{"type":"object","description":"(circular: DivisionDTO)"}}}}}},"role":{"type":"string","enum":["LEADER","MEMBER","REVIEWER","APPROVAL","COMPLETION_REVIEWER","NONE"]}}}}}}}}},"GET:/api/v2/projects/{projectId}/join-requests":{"path":"/api/v2/projects/{projectId}/join-requests","method":"GET","operationId":"getJoinRequestsByProjectId","summary":"List project join requests","description":"Fetches all pending join requests for a specific project. Use this endpoint to review, approve, or reject users requesting access to the project. Requires project member role. Returns request details including requester information, request status, and timestamps for workflow management.","tags":["Project"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"requestId":{"type":"integer"},"projectId":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"department":{"type":"string"},"division":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"},"relatedDivisions":{"type":"array","items":{"type":"object","description":"(circular: DivisionDTO)"}}}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["PENDING","APPROVED","REJECTED"]},"revisions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"menuCode":{"type":"string","enum":["PROJECT","BLOCK","FMM","WORKSHEET","ATTACHED_FILE","WORKSHEET_UNIT","CONTROL_PLAN"]},"actionCode":{"type":"string","enum":["F","W","F","W"]},"projectId":{"type":"string"},"userId":{"type":"string"},"userName":{"type":"string"},"reportNo":{"type":"string"},"refId":{"type":"string"},"updatedDateTime":{"type":"string","format":"date-time"},"description":{"type":"string"},"updatingStatus":{"type":"integer"},"revisionNumber":{"type":"integer"}}}}}}}}}}}},"POST:/api/v2/projects/{projectId}/join-requests":{"path":"/api/v2/projects/{projectId}/join-requests","method":"POST","operationId":"createJoinRequest","summary":"Create a project join request","description":"Submits a new request to join a project. Use this endpoint when a user wants to request access to a restricted project. The request will be reviewed by existing project members who can approve or reject it. Requires no existing project membership. Returns the created request ID for tracking.","tags":["Project"],"parameters":[{"name":"projectId","in":"path","description":"Target project ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"*/*":{"schema":{"type":"object","properties":{"reason":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"PUT:/api/v2/projects/{projectId}/join-requests":{"path":"/api/v2/projects/{projectId}/join-requests","method":"PUT","operationId":"updateJoinRequests","summary":"Approve or reject project join requests in batch","description":"Batch updates multiple join requests simultaneously to approve or reject project access requests. Use this endpoint for efficient workflow management when processing multiple pending requests at once. Requires project member role. Accepts a list of request IDs with their approval status and optional messages.","tags":["Project"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","format":"int32"},"id":{"type":"integer","format":"int32"},"accepted":{"type":"boolean"},"reason":{"type":"string"}}}}}}},"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"PUT:/api/v2/projects/{projectId}/join-requests/{requestId}":{"path":"/api/v2/projects/{projectId}/join-requests/{requestId}","method":"PUT","operationId":"updateJoinRequest","summary":"Approve or reject a project join request","description":"Updates a specific join request to approve or reject a user's project access request. Use this endpoint for individual request processing when you need to review and respond to one request at a time. Requires project member role. Supports approval with optional response messages or rejection with reasons.","tags":["Project"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"requestId","in":"path","description":"Join request ID","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"accepted":{"type":"boolean"},"reason":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"GET:/api/v2/projects/{projectId}/high-items":{"path":"/api/v2/projects/{projectId}/high-items","method":"GET","operationId":"list_11","summary":"List high items by project","description":"Returns high items in the target project ordered by rank. Supports optional keyword search on high-item titles and is used by system-definition screens.","tags":["High Items"],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"search","in":"query","schema":{"type":"string"}}],"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"sequence":{"type":"integer"},"level":{"type":"integer"}}}}}}}}},"GET:/api/v2/recommendation-items":{"path":"/api/v2/recommendation-items","method":"GET","operationId":"getRecommendationItems","summary":"List recommended actions","description":"Returns paged recommended actions extracted from worksheet rows. projectId is optional and narrows query scope when provided.","tags":["Recommendation"],"parameters":[{"name":"projectId","in":"query","description":"Project ID filter","schema":{"type":"string"}},{"name":"status","in":"query","description":"Recommended action status filter (NotCompleted|In-Progress|Delay|Completed|All)","schema":{"type":"string"}},{"name":"search","in":"query","description":"Unified keyword for recommended action fields and worksheet cell values","schema":{"type":"string"}},{"name":"page","in":"query","description":"Page number (starts from 1)","schema":{"type":"integer","format":"int32","default":1}},{"name":"size","in":"query","description":"Page size (max 100)","schema":{"type":"integer","format":"int32","default":20}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"reportNo":{"type":"string"},"fmmId":{"type":"string"},"wsId":{"type":"integer"},"status":{"type":"string","enum":["UNKNOWN","COMPLETED","IN_PROGRESS","DELAY"]}}}},"page":{"type":"integer"},"size":{"type":"integer"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"},"includes":{"type":"object","properties":{"columnHeaders":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"key":{"type":"string"},"title":{"type":"string"},"type":{"type":"string"},"readOnly":{"type":"string"},"width":{"type":"integer"},"valign":{"type":"integer"},"halign":{"type":"integer"},"children":{"type":"array","items":{"type":"object","description":"(circular: ColumnHeader)"}}}}}}}}}}}}}},"GET:/api/v2/open/metrics/{apType}/constants":{"path":"/api/v2/open/metrics/{apType}/constants","method":"GET","summary":"Get metric constants","description":"Retrieves metric scoring constants (Severity, Occurrence, Detection, Action Priorities) for the specified Analysis Type. Supports two FMEA methodologies: 'aiag' (AIAG/VDA standard) and 'msr' (Machinery Safety Regulation). Use this endpoint to fetch valid rating scales and calculation parameters required for risk assessment analysis. Commonly used when initializing FMEA worksheets, validating metric values, or configuring dropdown options. The {apType} parameter is case-insensitive but must match supported types. Returns 400 error if type is invalid.","tags":[],"operationId":"getMetricConstants","parameters":[{"name":"apType","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"GET:/api/v2/system/context-version":{"path":"/api/v2/system/context-version","method":"GET","summary":"Get Context Version","description":"Fetches the current application version, deployment semantic tag, and build metadata associated with the specific API context path. Historically replaces legacy health-check endpoints. Use this modern endpoint to verify proper API deployment, check version compatibility before complex operations, or display software version in the UI footer. (Check Version / Get Release Tag / Context Information / API Revision).","tags":[],"operationId":"checkContext","parameters":[{"name":"contextPath","in":"query","schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/system/health":{"path":"/api/v2/system/health","method":"GET","summary":"System Health","description":"Performs a lightweight diagnostic check and retrieves the basic operational health status of the FMEA system. Use this endpoint for load balancer pinging, uptime monitoring services (e.g., Datadog, Pingdom), or ensuring backend connectivity before user authentication. Returns a simple success payload if the core services and database connections are operational. (Health Check / System Status / Ping API / Service Heartbeat).","tags":[],"operationId":"health","parameters":[],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/projects/{projectId}/system-definition/conditions":{"path":"/api/v2/projects/{projectId}/system-definition/conditions","method":"GET","operationId":"listConditions","summary":"List system definition conditions","description":"Returns system definition conditions in the target project by scope and type. Optional filters apply to search, division, project title, model, and item.","tags":["System Definition"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"scope","in":"query","description":"Condition scope (owned|candidate)","required":true,"schema":{"type":"string"}},{"name":"type","in":"query","description":"Condition type (stress|design|process)","required":true,"schema":{"type":"string","enum":["stress","design","process"]}},{"name":"search","in":"query","description":"Condition keyword search (trimmed, max 100 characters)","schema":{"type":"string"}},{"name":"divisionId","in":"query","description":"Division filter for candidate scope (must be > 0)","schema":{"type":"integer","format":"int32"}},{"name":"projectTitle","in":"query","description":"Project title filter for candidate scope","schema":{"type":"string"}},{"name":"model","in":"query","description":"Model filter for candidate scope","schema":{"type":"string"}},{"name":"item","in":"query","description":"Item filter for candidate scope","schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"sequence":{"type":"integer"},"type":{"type":"string","enum":["STRESS","DESIGN","PROCESS"]},"title":{"type":"string"}}}}}}}}},"PUT:/api/v2/projects/{projectId}/system-definition/summary":{"path":"/api/v2/projects/{projectId}/system-definition/summary","method":"PUT","operationId":"updateSummary","summary":"Update system definition summary","description":"Updates system function and system requirement in the target project. For non-process projects, values are synchronized to the top rows of function and structure BOM.","tags":["System Definition"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"systemFunction":{"type":"string"},"systemRequirement":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"POST:/api/v2/projects/{projectId}/system-definition/conditions":{"path":"/api/v2/projects/{projectId}/system-definition/conditions","method":"POST","operationId":"createCondition","summary":"Create system definition condition","description":"Creates an owned condition in the target project for the requested type and title. If the same type/title already exists, the existing condition is returned.","tags":["System Definition"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"required":["title"],"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"}}}}},"required":true},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"sequence":{"type":"integer"},"type":{"type":"string","enum":["STRESS","DESIGN","PROCESS"]},"title":{"type":"string"}}}}}}}},"DELETE:/api/v2/projects/{projectId}/system-definition/conditions":{"path":"/api/v2/projects/{projectId}/system-definition/conditions","method":"DELETE","operationId":"deleteConditions","summary":"Delete system definition conditions","description":"Deletes owned conditions in the target project by sequence list. All requested sequences must exist or the request fails without partial deletion.","tags":["System Definition"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"sequences":{"type":"array","items":{"type":"integer","format":"int32"}}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"PATCH:/api/v2/projects/{projectId}/system-definition/conditions/{sequence}":{"path":"/api/v2/projects/{projectId}/system-definition/conditions/{sequence}","method":"PATCH","operationId":"updateCondition","summary":"Update system definition condition","description":"Updates the title of an owned condition identified by sequence in the target project. Duplicate titles within the same condition type are rejected.","tags":["System Definition"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"sequence","in":"path","description":"Condition sequence","required":true,"schema":{"minimum":1,"type":"integer","format":"int32"}}],"requestBody":{"content":{"application/json":{"schema":{"required":["title"],"type":"object","properties":{"title":{"type":"string"}}}}},"required":true},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"sequence":{"type":"integer"},"type":{"type":"string","enum":["STRESS","DESIGN","PROCESS"]},"title":{"type":"string"}}}}}}}},"GET:/api/v2/projects/{projectId}/system-definition-excel/conditions/export":{"path":"/api/v2/projects/{projectId}/system-definition-excel/conditions/export","method":"GET","operationId":"exportConditions","summary":"Export system definition conditions to Excel UUID","description":"Exports owned condition titles by type from the target project into a temporary Excel file and returns its UUID.","tags":["System Definition"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"type","in":"query","description":"Condition type (stress|design|process)","required":true,"schema":{"type":"string","enum":["stress","design","process"]}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"uuid":{"type":"object"}}}}}}}},"POST:/api/v2/projects/{projectId}/system-definition-excel/conditions/import/{uuid}":{"path":"/api/v2/projects/{projectId}/system-definition-excel/conditions/import/{uuid}","method":"POST","operationId":"importConditions","summary":"Import system definition conditions from Excel","description":"Imports condition titles from an uploaded Excel file into the target project and type. Duplicate and blank titles are ignored.","tags":["System Definition"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"uuid","in":"path","description":"Upload UUID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"sheetIndex":{"type":"integer","format":"int32"},"titleColumnIndex":{"type":"integer","format":"int32"},"startRowNumber":{"type":"integer","format":"int32"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}},"x-dependency-warning":"REQUIRES PRIOR FILE UPLOAD via [POST /api/v2/files]. The {uuid} parameter is the file identifier returned by the upload endpoint."},"GET:/api/v2/template/action-status":{"path":"/api/v2/template/action-status","method":"GET","operationId":"getAll","summary":"Get all action status templates","description":"Retrieves a complete list of all action status templates available in the system. Action status templates define the possible states for improvement actions (e.g., 'Open', 'In Progress', 'Completed', 'Closed'). Use this endpoint when you need to populate dropdown menus, display available status options, or validate status references. The response includes the template ID and title for each action status. Synonyms: list action statuses, get all action states, retrieve status options, fetch action status catalog.","tags":[],"parameters":[],"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"}}}}}}}}},"POST:/api/v2/template/action-status":{"path":"/api/v2/template/action-status","method":"POST","operationId":"create_4","summary":"Create action status template","description":"Creates a new action status template with a custom title. This endpoint is used to define additional states for improvement actions beyond the default options (e.g., 'Under Review', 'On Hold', 'Cancelled'). Requires ADMIN user level privileges. The request body must contain a 'title' field specifying the status name. Upon successful creation, returns the location URI of the new resource. Use this endpoint when you need to extend the available action status options for your organization's workflow. Synonyms: add action status, create new action state, define status template, add status option.","tags":[],"parameters":[],"requestBody":{"content":{"*/*":{"schema":{"type":"object","properties":{"title":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"GET:/api/v2/template/action-status/{id}":{"path":"/api/v2/template/action-status/{id}","method":"GET","operationId":"getById","summary":"Get action status template by ID","description":"Retrieves a specific action status template by its unique identifier. Use this endpoint when you need to view detailed information about a particular action status, validate an ID reference, or fetch the title of a specific status. Returns 404 Not Found if the specified ID does not exist. The response includes the template ID and title fields. This is useful for displaying current status information or verifying status existence before updates. Synonyms: get action status by ID, fetch specific action state, retrieve status template details, find action status.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"PUT:/api/v2/template/action-status/{id}":{"path":"/api/v2/template/action-status/{id}","method":"PUT","operationId":"update_3","summary":"Update action status template","description":"Updates an existing action status template's information. This endpoint allows administrators to modify the title of an action status template. Use this endpoint when you need to rename a status, correct typos, or standardize status terminology. Requires ADMIN user level privileges. The request body must contain a 'title' field with the new status name. The path parameter specifies the ID of the status template to update. Returns the updated DTO in the response. Synonyms: modify action status, edit action state, change status title, rename action status.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"*/*":{"schema":{"type":"object","properties":{"title":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"DELETE:/api/v2/template/action-status/{id}":{"path":"/api/v2/template/action-status/{id}","method":"DELETE","operationId":"delete_3","summary":"Delete action status template","description":"Permanently removes an action status template from the system. This endpoint is used to delete obsolete or unused action status options. Requires ADMIN user level privileges. The path parameter specifies the ID of the status template to delete. Use with caution as this operation cannot be undone. Returns 204 No Content on successful deletion. Consider whether any existing actions reference this status before deletion to avoid data integrity issues. Synonyms: remove action status, delete action state, eliminate status template, remove status option.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"GET:/api/v2/users":{"path":"/api/v2/users","method":"GET","summary":"Search users","description":"Returns paged users filtered by search, dept, and level.","operationId":"list_9","tags":["User"],"parameters":[{"name":"search","in":"query","description":"Unified keyword (id, name, englishName, email, department)","schema":{"type":"string"}},{"name":"dept","in":"query","description":"Department exact-match filter","schema":{"type":"string"}},{"name":"level","in":"query","description":"User level filter (ADMIN, NORMAL, READER)","schema":{"type":"string","enum":["A","N","R"]}},{"name":"page","in":"query","description":"Page number (starts from 1)","schema":{"type":"integer","format":"int32","default":1}},{"name":"size","in":"query","description":"Page size (max 100)","schema":{"type":"integer","format":"int32","default":20}}],"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"department":{"type":"string"},"divisionId":{"type":"integer"}}}},"page":{"type":"integer"},"size":{"type":"integer"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"},"includes":{"type":"object","properties":{"divisions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"},"relatedDivisions":{"type":"array","items":{"type":"object","description":"(circular: DivisionDTO)"}}}}}}}}}}}}}},"GET:/api/v2/users/{userId}":{"path":"/api/v2/users/{userId}","method":"GET","operationId":"get_4","summary":"Get user details","description":"Retrieves detailed user profile information by user ID. Use this endpoint to fetch user account details, profile data, or user metadata for display purposes. This is commonly used when you need to show user information in UI components, validate user existence, or retrieve user context for other operations. The endpoint returns the complete user DTO including all available user attributes. Requires NORMAL user level or higher authentication.","tags":["User"],"parameters":[{"name":"userId","in":"path","description":"User ID to retrieve","required":true,"schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"department":{"type":"string"},"division":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"},"relatedDivisions":{"type":"array","items":{"type":"object","description":"(circular: DivisionDTO)"}}}}}}}}}}},"GET:/api/v2/users/my/project-join-requests":{"path":"/api/v2/users/my/project-join-requests","method":"GET","operationId":"listMyProjectJoinRequests","summary":"List my project join requests","description":"Retrieves all project join requests submitted by the currently authenticated user. Use this endpoint to list pending invitations, access requests, or project membership requests that you have submitted. The response includes the status of each request (pending, approved, rejected) and associated project details. This is useful for showing users their request history, checking request status, or managing pending access requests. The endpoint automatically filters results based on the authenticated user's identity from the session context. Requires READER user level or higher authentication. Supports optional filtering by specific project ID via the projectId query parameter.","tags":["User"],"parameters":[{"name":"projectId","in":"query","description":"Optional project ID filter","schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"requestId":{"type":"integer"},"projectId":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"department":{"type":"string"},"division":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"},"relatedDivisions":{"type":"array","items":{"type":"object","description":"(circular: DivisionDTO)"}}}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["PENDING","APPROVED","REJECTED"]},"revisions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"menuCode":{"type":"string","enum":["PROJECT","BLOCK","FMM","WORKSHEET","ATTACHED_FILE","WORKSHEET_UNIT","CONTROL_PLAN"]},"actionCode":{"type":"string","enum":["F","W","F","W"]},"projectId":{"type":"string"},"userId":{"type":"string"},"userName":{"type":"string"},"reportNo":{"type":"string"},"refId":{"type":"string"},"updatedDateTime":{"type":"string","format":"date-time"},"description":{"type":"string"},"updatingStatus":{"type":"integer"},"revisionNumber":{"type":"integer"}}}}}}}}}}}},"GET:/api/v2/worksheet-templates/{id}":{"path":"/api/v2/worksheet-templates/{id}","method":"GET","operationId":"get_6","summary":"Get worksheet template","description":"Returns a worksheet template. When search is provided, template headers are keyword-filtered.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"search","in":"query","description":"Worksheet template header keyword search (trimmed, max 100 characters)","schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"projectType":{"type":"string","enum":["DESIGN","PROCESS","EQUIPMENT","FA","FTA","CPLAN"]},"category":{"type":"string","enum":["AIAG","AIAG_VDA","FMEA_MSR","STANDARD"]},"name":{"type":"string"},"order":{"type":"integer"},"defaultFlag":{"type":"boolean"},"active":{"type":"boolean"},"headers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"worksheetTemplateId":{"type":"integer"},"columnId":{"type":"integer"},"columnKey":{"type":"string"},"dataType":{"type":"string","enum":["INTEGER","BOOLEAN","TEXT","DATE","REFER"]},"parentId":{"type":"integer"},"groupHeader":{"type":"boolean"},"name":{"type":"string"},"width":{"type":"integer"},"readOnly":{"type":"boolean"},"mergeGroup":{"type":"integer"},"order":{"type":"integer"},"vAlign":{"type":"integer"},"hAlign":{"type":"integer"},"style":{"type":"string"},"description":{"type":"string"}}}}}}}}}}},"GET:/api/v2/projects/{projectId}/worksheets":{"path":"/api/v2/projects/{projectId}/worksheets","method":"GET","summary":"Get worksheet summaries","description":"Retrieves a list of all worksheet summaries within a project. This endpoint provides a high-level overview (summary/directory) of available worksheets, excluding detailed content. Use this to browse, list, or enumerate worksheets before fetching specific worksheet details. The response contains basic metadata such as report numbers and titles. Ideal for dashboard views, worksheet selection interfaces, or getting a quick inventory of all worksheets in a project. No authentication required for read access.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}}],"operationId":"getSummaries","responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"reportNo":{"type":"string"},"name":{"type":"string"},"item":{"type":"string"},"analysisLevel":{"type":"string"},"blockDiagramType":{"type":"string","enum":["FUNCTION","STRUCTURE","FUNCTION_STRUCTURE","STRUCTURE_FUNCTION","PROCESS","SUPER_SYSTEM","FUNCTION_ANALYSIS"]},"templateName":{"type":"string"},"description":{"type":"string"},"improvementMetrics":{"type":"object","properties":{"before":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"average":{"type":"integer"}}},"after":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"average":{"type":"integer"}}}}},"createdBy":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedBy":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}}},"POST:/api/v2/projects/{projectId}/worksheets":{"path":"/api/v2/projects/{projectId}/worksheets","method":"POST","summary":"Create worksheet","description":"Creates a new worksheet within the specified project. Use this endpoint to initialize a blank worksheet, set up a new analysis document, or establish a fresh worksheet structure. The request accepts worksheet creation parameters via WorksheetCreationDTO. Upon successful creation, returns the report number (reportNoSimple) of the newly created worksheet. Requires NORMAL user level and PROJECT MEMBER role. This is the initiating action for any worksheet-based workflow. Common use cases include: starting a new FMEA analysis, creating additional worksheets for different subsystems, or generating worksheet templates.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"blockDiagramId":{"type":"string"},"analysisLevel":{"type":"string"},"nextReportNo":{"type":"string"},"failureModeIds":{"type":"array","items":{"type":"string"}},"worksheetTemplateId":{"type":"integer","format":"int32"},"description":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"*/*":{}}}},"operationId":"create_5"},"GET:/api/v2/projects/{projectId}/worksheets/{reportNoSimple}":{"path":"/api/v2/projects/{projectId}/worksheets/{reportNoSimple}","method":"GET","summary":"Get worksheet by report number","description":"Fetches the complete details of a specific worksheet identified by its report number. The reportNoSimple parameter accepts formats like '3' or '3-1' (handling sub-worksheets via ReportNoSetDTO). Returns the full worksheet data including all rows, columns, headers, and cell values. Use this endpoint after listing summaries to retrieve detailed content for editing or analysis. Requires NORMAL user level. Common scenarios include: loading a worksheet for editing, viewing worksheet content, exporting worksheet data, or fetching worksheet structure for UI rendering. This is the primary read operation for full worksheet content.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"reportNoSimple","in":"path","required":true,"schema":{"type":"string"}}],"operationId":"get_5","responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"analysisLevel":{"type":"string"},"reportNo":{"type":"string"},"serial":{"type":"integer"},"blockDiagram":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["FUNCTION","STRUCTURE","FUNCTION_STRUCTURE","STRUCTURE_FUNCTION","PROCESS","SUPER_SYSTEM","FUNCTION_ANALYSIS"]},"alias":{"type":"string"},"order":{"type":"integer"},"description":{"type":"string"},"numberFormat":{"type":"string"}}},"worksheetTemplateId":{"type":"integer"},"description":{"type":"string"}}}}}}}},"PUT:/api/v2/projects/{projectId}/worksheets/{reportNoSimple}":{"path":"/api/v2/projects/{projectId}/worksheets/{reportNoSimple}","method":"PUT","summary":"Update worksheet","description":"Updates and saves changes to an existing worksheet identified by its report number. Accepts WorksheetSaveDTO containing modified worksheet data including cell values, structure changes, and metadata updates. The reportNoSimple parameter supports both simple numbers ('3') and sub-worksheet notation ('3-1'). All changes are persisted to the database. Requires NORMAL user level and PROJECT MEMBER role with write permissions. Common use cases: saving worksheet edits, updating cell values, modifying worksheet structure, applying bulk changes, or synchronizing client-side modifications. This is the primary write operation for worksheets and should be called after any user modifications to persist data.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"reportNoSimple","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"failureModeWorksheets":{"type":"array","items":{"required":["id"],"type":"object","properties":{"id":{"type":"integer","format":"int32"},"clientId":{"type":"string"},"failureModeId":{"type":"string"},"rows":{"type":"array","items":{"required":["id"],"type":"object","properties":{"id":{"type":"integer","format":"int32"},"clientId":{"type":"string"},"columns":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","format":"int32"},"value":{"type":"string"},"style":{"type":"string"}}}},"followUps":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string"}}}},"fmmNodeId":{"type":"string"}}}},"order":{"type":"integer","format":"int32"}}}},"clientId":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"clientId":{"type":"string"},"id":{"type":"string"},"target":{"type":"string","enum":["WORKSHEET_ID","FAILURE_MODE_WORKSHEET_ID","WORKSHEET_ROW_ID","BLOCK_NODE_ID","BLOCK_REFERENCED_ID","FMM_OBJECT_ID"]}}}}}}}},"operationId":"save_7"},"DELETE:/api/v2/projects/{projectId}/worksheets/{reportNoSimple}":{"path":"/api/v2/projects/{projectId}/worksheets/{reportNoSimple}","method":"DELETE","summary":"Delete worksheet","description":"Permanently removes a worksheet from the project using its report number identifier. The reportNoSimple parameter accepts formats like '3' or '3-1' for sub-worksheets. This operation is irreversible and will delete all worksheet data including rows, columns, cell values, and associated metadata. Requires NORMAL user level and PROJECT MEMBER role. Use with caution as deleted worksheets cannot be recovered without database restore. Common scenarios: removing obsolete worksheets, cleaning up test data, deleting unused analysis documents, or managing worksheet lifecycle. Consider archiving instead of deleting if the worksheet might be needed for future reference.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"reportNoSimple","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"failureModeWorksheets":{"type":"array","items":{"required":["id"],"type":"object","properties":{"id":{"type":"integer","format":"int32"},"clientId":{"type":"string"},"failureModeId":{"type":"string"},"rows":{"type":"array","items":{"required":["id"],"type":"object","properties":{"id":{"type":"integer","format":"int32"},"clientId":{"type":"string"},"columns":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","format":"int32"},"value":{"type":"string"},"style":{"type":"string"}}}},"followUps":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string"}}}},"fmmNodeId":{"type":"string"}}}},"order":{"type":"integer","format":"int32"}}}},"clientId":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"*/*":{}}}},"operationId":"delete_4"},"PUT:/api/v2/projects/{projectId}/worksheet-excel/{uuid}":{"path":"/api/v2/projects/{projectId}/worksheet-excel/{uuid}","method":"PUT","summary":"Update worksheet Excel","description":"Updates an existing worksheet by importing data from an uploaded Excel file (.xlsx, .xls). Use this endpoint to modify worksheet contents, replace existing data, or refresh worksheet records with new Excel data. The endpoint parses the uploaded Excel file and updates the corresponding worksheet record. This is the primary method for editing worksheet data through Excel import. Requires project member role.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"reportNo":{"type":"string"},"mappings":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","format":"int32"},"columnId":{"type":"integer","format":"int32"}}}},"startRow":{"type":"integer","format":"int32"},"templateId":{"type":"integer","format":"int32"}}}}}},"responses":{"default":{"description":"default response","content":{"*/*":{}}}},"operationId":"update_4","x-dependency-warning":"REQUIRES PRIOR FILE UPLOAD via [POST /api/v2/files]. The {uuid} parameter is the file ID returned by the upload endpoint."},"POST:/api/v2/projects/{projectId}/worksheet-excel/{uuid}":{"path":"/api/v2/projects/{projectId}/worksheet-excel/{uuid}","method":"POST","summary":"Add worksheet Excel","description":"Creates a new worksheet by importing data from an uploaded Excel file (.xlsx, .xls). Use this endpoint to add a new worksheet record, create worksheet entries from Excel, or import worksheet data from spreadsheet files. The endpoint parses the uploaded Excel file and creates a new worksheet with the data. Returns the created worksheet's report number for reference. Requires project member role.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"reportNo":{"type":"string"},"mappings":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","format":"int32"},"columnId":{"type":"integer","format":"int32"}}}},"startRow":{"type":"integer","format":"int32"},"templateId":{"type":"integer","format":"int32"}}}}}},"responses":{"default":{"description":"default response","content":{"*/*":{}}}},"operationId":"add","x-dependency-warning":"REQUIRES PRIOR FILE UPLOAD via [POST /api/v2/files]. The {uuid} parameter is the file ID returned by the upload endpoint."},"GET:/api/v2/projects/{projectId}/worksheet-excel/{reportNoSimple}":{"path":"/api/v2/projects/{projectId}/worksheet-excel/{reportNoSimple}","method":"GET","summary":"Get worksheet Excel download link","description":"Generates a download link for a worksheet Excel file by report number. Use this endpoint to export worksheet data, download worksheet as Excel, or retrieve the spreadsheet file for offline editing. The link provides access to the Excel file associated with the specified worksheet report number. Requires reader-level access or higher.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"reportNoSimple","in":"path","required":true,"schema":{"type":"string"}}],"operationId":"getDownloadLink_1","responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"fileName":{"type":"string"},"downloadUri":{"type":"string"}}}}}}}},"GET:/api/v2/projects/{projectId}/worksheet-excel/{uuid}/metadata":{"path":"/api/v2/projects/{projectId}/worksheet-excel/{uuid}/metadata","method":"GET","summary":"Get worksheet Excel metadata","description":"Extracts metadata from an uploaded Excel file without processing the full data. Use this endpoint to preview file information, validate Excel structure, inspect worksheet contents, or retrieve file properties before saving. Returns metadata including sheet names, column headers, and data structure. Useful for pre-validating Excel files before add/update operations. Requires project member role.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}}],"operationId":"getMetadata","x-dependency-warning":"REQUIRES PRIOR FILE UPLOAD via [POST /api/v2/files]. The {uuid} parameter is the file ID returned by the upload endpoint.","responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string"},"reportNo":{"type":"string"},"templateId":{"type":"integer"},"idsByFailureMode":{"type":"array","items":{"type":"integer"}},"latestModified":{"type":"string","format":"date-time"},"targetModified":{"type":"string","format":"date-time"}}}}}}}},"GET:/api/v2/projects/{projectId}/worksheet-excel/{reportNoSimple}/sheets":{"path":"/api/v2/projects/{projectId}/worksheet-excel/{reportNoSimple}/sheets","method":"GET","summary":"Get Excel Sheets List","description":"Fetches a complete list of available Excel worksheets/tabs associated with a specific previously generated or uploaded Excel report. Ideal for previewing workbook structure, selecting specific sheets for analysis, or retrieving metadata before detailed extraction. (List sheets / View Excel tabs / Get available worksheets).","tags":[],"operationId":"getSheets","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"reportNoSimple","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}}}},"GET:/api/v2/projects/{projectId}/worksheets/failuremode/{failureModeId}":{"path":"/api/v2/projects/{projectId}/worksheets/failuremode/{failureModeId}","method":"GET","summary":"Get worksheet by failure mode","description":"Fetches the complete worksheet data associated with a specific failure mode within a project. Use this endpoint to retrieve, load, or view detailed failure mode analysis worksheets including RPN calculations, risk assessments, and mitigation strategies. This is essential for reviewing existing failure mode documentation, conducting quality audits, or preparing data for editing operations. The endpoint returns structured worksheet content that can be used for analysis, reporting, or further modification through the update endpoint.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"failureModeId","in":"path","required":true,"schema":{"type":"string"}}],"operationId":"getByFailureMode","responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"reportNo":{"type":"string"},"failureModeId":{"type":"string"},"order":{"type":"integer"}}}}}}}},"POST:/api/v2/projects/{projectId}/worksheets/failuremode/{failureModeId}":{"path":"/api/v2/projects/{projectId}/worksheets/failuremode/{failureModeId}","method":"POST","summary":"Create worksheet by failure mode","description":"Generates a new worksheet for a specific failure mode within a project. Use this endpoint to initialize, set up, or create failure mode analysis worksheets. This operation establishes a structured worksheet template linked to the identified failure mode, optionally associating it with a block diagram via the blockDiagramId query parameter. Essential for starting new failure mode analyses, initiating risk assessment workflows, or expanding project documentation coverage. The created worksheet provides a framework for capturing RPN calculations, failure effects, causes, and recommended actions.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"failureModeId","in":"path","required":true,"schema":{"type":"string"}},{"name":"blockDiagramId","in":"query","schema":{"type":"string"}}],"operationId":"createByFailureMode","responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/projects/{projectId}/worksheets/{reportNo}/headers":{"path":"/api/v2/projects/{projectId}/worksheets/{reportNo}/headers","method":"GET","summary":"Get worksheet headers","description":"Returns worksheet headers copied for the worksheet. When search is provided, keyword matching is applied.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"reportNo","in":"path","required":true,"schema":{"type":"string"}},{"name":"search","in":"query","description":"Worksheet header keyword search (trimmed, max 100 characters)","schema":{"type":"string"}}],"operationId":"getHeaders","responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"columnId":{"type":"integer"},"columnKey":{"type":"string"},"dataType":{"type":"string","enum":["INTEGER","BOOLEAN","TEXT","DATE","REFER"]},"parentId":{"type":"integer"},"groupHeader":{"type":"boolean"},"name":{"type":"string"},"width":{"type":"integer"},"readOnly":{"type":"boolean"},"mergeGroup":{"type":"integer"},"order":{"type":"integer"},"vAlign":{"type":"integer"},"hAlign":{"type":"integer"},"style":{"type":"string"},"description":{"type":"string"}}}}}}}}},"PUT:/api/v2/projects/{projectId}/worksheets/{reportNo}/{failureModeId}":{"path":"/api/v2/projects/{projectId}/worksheets/{reportNo}/{failureModeId}","method":"PUT","summary":"Save worksheet by failure mode","description":"Updates and persists worksheet data for a specific failure mode within a designated report. Use this endpoint to save, modify, edit, or update failure mode analysis content including severity ratings, occurrence probabilities, detection rankings, RPN calculations, recommended actions, and status tracking. This operation overwrites existing data with the provided FailureModeWorksheetSaveDTO payload, ensuring data persistence and version control. Essential for recording analysis progress, updating risk assessments after reviews, documenting corrective actions, or maintaining live risk evaluation data. Requires project member role authentication and supports iterative refinement of failure mode analyses throughout the project lifecycle.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"reportNo","in":"path","required":true,"schema":{"type":"string"}},{"name":"failureModeId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"required":["id"],"type":"object","properties":{"id":{"type":"integer","format":"int32"},"clientId":{"type":"string"},"failureModeId":{"type":"string"},"rows":{"type":"array","items":{"required":["id"],"type":"object","properties":{"id":{"type":"integer","format":"int32"},"clientId":{"type":"string"},"columns":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","format":"int32"},"value":{"type":"string"},"style":{"type":"string"}}}},"followUps":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string"}}}},"fmmNodeId":{"type":"string"}}}},"order":{"type":"integer","format":"int32"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"clientId":{"type":"string"},"id":{"type":"string"},"target":{"type":"string","enum":["WORKSHEET_ID","FAILURE_MODE_WORKSHEET_ID","WORKSHEET_ROW_ID","BLOCK_NODE_ID","BLOCK_REFERENCED_ID","FMM_OBJECT_ID"]}}}}}}}},"operationId":"saveByFailureMode"},"GET:/api/v2/worksheet-templates/{id}/headers":{"path":"/api/v2/worksheet-templates/{id}/headers","method":"GET","summary":"Get worksheet template headers","description":"Returns worksheet template headers. When search is provided, keyword matching is applied.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"search","in":"query","description":"Worksheet template header keyword search (trimmed, max 100 characters)","schema":{"type":"string"}}],"operationId":"getHeaders_1","responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"worksheetTemplateId":{"type":"integer"},"columnId":{"type":"integer"},"columnKey":{"type":"string"},"dataType":{"type":"string","enum":["INTEGER","BOOLEAN","TEXT","DATE","REFER"]},"parentId":{"type":"integer"},"groupHeader":{"type":"boolean"},"name":{"type":"string"},"width":{"type":"integer"},"readOnly":{"type":"boolean"},"mergeGroup":{"type":"integer"},"order":{"type":"integer"},"vAlign":{"type":"integer"},"hAlign":{"type":"integer"},"style":{"type":"string"},"description":{"type":"string"}}}}}}}}}}
1
+ {"DELETE:/api/v2/admin/api-keys/{id}":{"path":"/api/v2/admin/api-keys/{id}","method":"DELETE","operationId":"deactivate","summary":"Deactivate API key","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.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"DELETE:/api/v2/admin/api-keys/user/{userid}":{"path":"/api/v2/admin/api-keys/user/{userid}","method":"DELETE","operationId":"deactivateByUserId","summary":"Deactivate API keys by user ID","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.","tags":[],"parameters":[{"name":"userid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/admin/api-keys/stats":{"path":"/api/v2/admin/api-keys/stats","method":"GET","operationId":"getStats","summary":"Get API key statistics","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.","tags":[],"parameters":[],"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/admin/api-keys":{"path":"/api/v2/admin/api-keys","method":"GET","operationId":"list_3","summary":"List API keys (Admin)","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.","tags":[],"parameters":[{"name":"userid","in":"query","schema":{"type":"string"}},{"name":"isActive","in":"query","schema":{"type":"boolean"}},{"name":"expiredOnly","in":"query","schema":{"type":"boolean"}},{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":1}},{"name":"size","in":"query","schema":{"type":"integer","format":"int32","default":20}}],"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/admin/apikeys/logs":{"path":"/api/v2/admin/apikeys/logs","method":"GET","operationId":"getAuditLogs","summary":"Get API key audit logs","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.","tags":[],"parameters":[{"name":"adminUserid","in":"query","schema":{"type":"string"}},{"name":"targetUserid","in":"query","schema":{"type":"string"}},{"name":"action","in":"query","schema":{"type":"string"}},{"name":"startDate","in":"query","schema":{"type":"string"}},{"name":"endDate","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":1}},{"name":"size","in":"query","schema":{"type":"integer","format":"int32","default":20}}],"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/api-keys":{"path":"/api/v2/api-keys","method":"GET","operationId":"list_4","summary":"List API keys","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.","tags":[],"parameters":[],"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"POST:/api/v2/api-keys":{"path":"/api/v2/api-keys","method":"POST","operationId":"create_1","summary":"Create API key","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.","tags":[],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"keyName":{"type":"string"},"expiryDays":{"type":"integer","format":"int32"},"userLevel":{"type":"string","enum":["A","N","R"]}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"DELETE:/api/v2/api-keys/{id}":{"path":"/api/v2/api-keys/{id}","method":"DELETE","operationId":"delete_1","summary":"Delete API key","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.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"GET:/api/v2/api-keys/{id}/logs":{"path":"/api/v2/api-keys/{id}/logs","method":"GET","operationId":"getLogs","summary":"Get API key usage logs","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.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"startDate","in":"query","schema":{"type":"string"}},{"name":"endDate","in":"query","schema":{"type":"string"}},{"name":"endpoint","in":"query","schema":{"type":"string"}},{"name":"statusCode","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","schema":{"type":"integer","format":"int32","default":20}}],"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/api-keys/{id}/logs/summary":{"path":"/api/v2/api-keys/{id}/logs/summary","method":"GET","operationId":"getLogsSummary","summary":"Get API key logs summary","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.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"startDate","in":"query","schema":{"type":"string"}},{"name":"endDate","in":"query","schema":{"type":"string"}}],"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"POST:/api/v2/api-keys/{id}/regenerate":{"path":"/api/v2/api-keys/{id}/regenerate","method":"POST","operationId":"regenerate","summary":"Regenerate API key","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.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"expiryDate":{"type":"string","format":"date"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"POST:/api/v2/auth/change-password":{"path":"/api/v2/auth/change-password","method":"POST","operationId":"changePassword_1","summary":"Change password","description":"Changes a user password and returns the current legacy placeholder response (null).","tags":["Auth"],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object"}}}}}},"POST:/api/v2/auth/login":{"path":"/api/v2/auth/login","method":"POST","operationId":"login_1","summary":"Login","description":"Authenticates credentials and returns access/refresh tokens with user details.","tags":["Auth"],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"required":["password","userId"],"type":"object","properties":{"userId":{"type":"string"},"password":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"accessToken":{"type":"string"},"refreshToken":{"type":"string"},"tokenType":{"type":"string","enum":["BASIC","BEARER"]},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"englishName":{"type":"string"},"email":{"type":"string"},"department":{"type":"string"},"division":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"}}},"userLevel":{"type":"string","enum":["ADMIN","NORMAL","READER"]},"creationDate":{"type":"string","format":"date-time"},"lastPasswordChangeDate":{"type":"string","format":"date-time"},"useAccessibleDivisions":{"type":"integer"},"accessibleDivisions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"}}}},"encryptedPassword":{"type":"string"}}}}}}}}}},"POST:/api/v2/auth/logout":{"path":"/api/v2/auth/logout","method":"POST","operationId":"logout_1","summary":"Logout","description":"Invalidates the refresh token for the current user session and returns the legacy result.","tags":["Auth"],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"required":["refreshToken"],"type":"object","properties":{"refreshToken":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"string"}}}}}},"POST:/api/v2/auth/password-reset-request":{"path":"/api/v2/auth/password-reset-request","method":"POST","operationId":"passwordResetRequest_1","summary":"Request password reset","description":"Submits a password reset request and returns the current legacy placeholder response (null).","tags":["Auth"],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object"}}}}}},"POST:/api/v2/auth/refresh":{"path":"/api/v2/auth/refresh","method":"POST","operationId":"refresh_1","summary":"Refresh access token","description":"Validates a refresh token and issues a new token response with access/refresh tokens.","tags":["Auth"],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"required":["refreshToken"],"type":"object","properties":{"refreshToken":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"accessToken":{"type":"string"},"refreshToken":{"type":"string"},"tokenType":{"type":"string","enum":["BASIC","BEARER"]},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"englishName":{"type":"string"},"email":{"type":"string"},"department":{"type":"string"},"division":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"}}},"userLevel":{"type":"string","enum":["ADMIN","NORMAL","READER"]},"creationDate":{"type":"string","format":"date-time"},"lastPasswordChangeDate":{"type":"string","format":"date-time"},"useAccessibleDivisions":{"type":"integer"},"accessibleDivisions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"}}}},"encryptedPassword":{"type":"string"}}}}}}}}}},"GET:/api/v2/projects/{projectId}/block-diagrams":{"path":"/api/v2/projects/{projectId}/block-diagrams","method":"GET","operationId":"list_5","summary":"List block diagrams","description":"Returns block diagrams in the project. When search is provided, keyword matching is applied across block diagram fields.","tags":["Block Diagram"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"search","in":"query","description":"Block diagram keyword search (trimmed, max 100 characters)","schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["FUNCTION","STRUCTURE","FUNCTION_STRUCTURE","STRUCTURE_FUNCTION","PROCESS","SUPER_SYSTEM","FUNCTION_ANALYSIS"]},"alias":{"type":"string"},"order":{"type":"integer"},"description":{"type":"string"},"numberFormat":{"type":"string"}}}}}}}}},"GET:/api/v2/projects/{projectId}/block-diagrams/{blockId}/nodes":{"path":"/api/v2/projects/{projectId}/block-diagrams/{blockId}/nodes","method":"GET","operationId":"getNodes","summary":"Get block nodes","description":"Returns all nodes in the target block diagram.","tags":["Block Diagram"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"blockId","in":"path","description":"Block diagram ID","required":true,"schema":{"type":"string"}},{"name":"view","in":"query","description":"Response view type (list|tree)","schema":{"type":"string","default":"list"}},{"name":"search","in":"query","description":"Block node keyword search (trimmed, max 100 characters)","schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object"}}}}}},"PUT:/api/v2/projects/{projectId}/block-diagrams/{blockId}/nodes":{"path":"/api/v2/projects/{projectId}/block-diagrams/{blockId}/nodes","method":"PUT","operationId":"saveNodes_1","summary":"Save block nodes","description":"Creates, updates, and deletes block nodes in a single request.","tags":["Block Diagram"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"blockId","in":"path","description":"Block diagram ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"clientId":{"type":"string"},"parentId":{"type":"string"},"clientParentId":{"type":"string"},"referencedId":{"type":"string"},"function":{"type":"string"},"item":{"type":"string"},"requirement":{"type":"string"},"type":{"type":"string","enum":["FUNCTION","PART","SUB_FUNCTION","ASSEMBLY","NEW_CHANGE_ASSEMBLY","NEW_CHANGE_PART","NEW_CHANGE_PROCESS","SUPER_SYSTEM","TARGET"]},"order":{"type":"integer","format":"int32"},"processNumber":{"type":"string"},"processFlowChartName":{"type":"string"},"processFlowChartSymbol":{"type":"string"}}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"clientId":{"type":"string"},"id":{"type":"string"},"target":{"type":"string","enum":["WORKSHEET_ID","FAILURE_MODE_WORKSHEET_ID","WORKSHEET_ROW_ID","BLOCK_NODE_ID","BLOCK_REFERENCED_ID","FMM_OBJECT_ID"]}}}}}}}}},"GET:/api/v2/projects/{projectId}/block-diagrams/{blockId}/nodes/tree":{"path":"/api/v2/projects/{projectId}/block-diagrams/{blockId}/nodes/tree","method":"GET","operationId":"getNodesTree","summary":"Get block nodes tree","description":"Legacy endpoint kept for backward compatibility. Prefer GET /nodes?view=tree.","tags":["Block Diagram"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"blockId","in":"path","description":"Block diagram ID","required":true,"schema":{"type":"string"}},{"name":"search","in":"query","description":"Block node keyword search (trimmed, max 100 characters)","schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"parentId":{"type":"string"},"referencedId":{"type":"string"},"function":{"type":"string"},"item":{"type":"string"},"requirement":{"type":"string"},"type":{"type":"string","enum":["SUB_FUNCTION","NEW_CHANGE_ASSEMBLY","NEW_CHANGE_PART","TARGET"]},"order":{"type":"integer"},"processNumber":{"type":"string"},"processFlowChartName":{"type":"string"},"processFlowChartSymbol":{"type":"string"}}}}}}},"deprecated":true},"GET:/api/v2/projects/{projectId}/block-diagrams-excel/{blockId}":{"path":"/api/v2/projects/{projectId}/block-diagrams-excel/{blockId}","method":"GET","operationId":"getDownloadLink","summary":"Get excel export download link","description":"Returns a downloadable URI for block diagram Excel export.","tags":["Block Diagram Excel"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"blockId","in":"path","description":"Block diagram ID","required":true,"schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"fileName":{"type":"string"},"downloadUri":{"type":"string"}}}}}}}},"GET:/api/v2/projects/{projectId}/block-diagrams-excel/{uuid}/data":{"path":"/api/v2/projects/{projectId}/block-diagrams-excel/{uuid}/data","method":"GET","operationId":"getData","x-dependency-warning":"REQUIRES PRIOR FILE UPLOAD via [POST /api/v2/files]. The {uuid} parameter is the file ID returned by the upload endpoint.","summary":"Get parsed excel data","description":"Returns parsed block node data by upload UUID.","tags":["Block Diagram Excel"],"parameters":[{"name":"uuid","in":"path","description":"Upload UUID","required":true,"schema":{"type":"string"}},{"name":"startRowNumber","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"level","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"item","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"function","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"requirement","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"type","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"processNumber","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"processFlowChartSymbol","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"processFlowChartName","in":"query","schema":{"type":"integer","format":"int32"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"rowNumber":{"type":"integer"},"level":{"type":"integer"},"function":{"type":"string"},"item":{"type":"string"},"requirement":{"type":"string"},"type":{"type":"string","enum":["SUB_FUNCTION","NEW_CHANGE_ASSEMBLY","NEW_CHANGE_PART","TARGET"]},"order":{"type":"string"},"processNumber":{"type":"string"},"processFlowChartName":{"type":"string"},"processFlowChartSymbol":{"type":"string"}}}}}}}}},"GET:/api/v2/projects/{projectId}/block-diagrams/{blockDiagramId}/failure-modes/{failureModeId}":{"path":"/api/v2/projects/{projectId}/block-diagrams/{blockDiagramId}/failure-modes/{failureModeId}","method":"GET","operationId":"get","summary":"Get failure mode details","description":"Returns a failure mode by ID. If search is provided, resolves by failure mode name within the block diagram.","tags":["Failure Mode"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"blockDiagramId","in":"path","description":"Block diagram ID","required":true,"schema":{"type":"string"}},{"name":"failureModeId","in":"path","description":"Failure mode ID","required":true,"schema":{"type":"string"}},{"name":"search","in":"query","description":"Failure mode name keyword","schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"DELETE:/api/v2/projects/{projectId}/block-diagrams/{blockDiagramId}/failure-modes/{failureModeId}":{"path":"/api/v2/projects/{projectId}/block-diagrams/{blockDiagramId}/failure-modes/{failureModeId}","method":"DELETE","operationId":"deleteFailureMode","summary":"Delete failure mode","description":"Deletes a predefined failure mode from a specific block diagram within a project. This destructive operation permanently removes the failure mode and any associated FMM diagram structural data from the component. Use this endpoint to clean up incorrect entries, remove obsolete failure definitions, or restructure the block diagram's failure analysis. Since this action is irreversible, it should be called only after user confirmation. It is essential for maintaining accurate and up-to-date Failure Mode and Effects Analysis (FMEA) records.","tags":["Failure Mode"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"blockDiagramId","in":"path","description":"Block diagram ID","required":true,"schema":{"type":"string"}},{"name":"failureModeId","in":"path","description":"Failure mode ID","required":true,"schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"GET:/api/v2/template/block-diagrams/{blockDiagramType}/sheet-headers":{"path":"/api/v2/template/block-diagrams/{blockDiagramType}/sheet-headers","method":"GET","operationId":"getBlockDiagramSheetHeaders","summary":"Get Block Diagram Excel Sheet Headers (v2)","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.","tags":[],"parameters":[{"name":"blockDiagramType","in":"path","required":true,"schema":{"type":"string","enum":["FUNCTION","STRUCTURE","FUNCTION_STRUCTURE","STRUCTURE_FUNCTION","PROCESS","SUPER_SYSTEM","FUNCTION_ANALYSIS"]}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"POST:/api/v2/projects/{projectId}/block-diagrams/{blockDiagramId}/failure-modes":{"path":"/api/v2/projects/{projectId}/block-diagrams/{blockDiagramId}/failure-modes","method":"POST","summary":"Create failure modes","description":"Creates one or more failure modes for the target block diagram.","tags":["Failure Mode"],"operationId":"create_2","parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"blockDiagramId","in":"path","description":"Block diagram ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"nodeId":{"type":"string"},"name":{"type":"string"},"id":{"type":"string"}}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/projects/{projectId}/block-diagrams/{blockId}/nodes/{nodeId}/failure-modes":{"path":"/api/v2/projects/{projectId}/block-diagrams/{blockId}/nodes/{nodeId}/failure-modes","method":"GET","operationId":"listNodeFailureModes","summary":"List node failure modes","description":"Returns failure modes mapped to the target node. Optional search applies keyword filtering.","tags":["Block Diagram"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"blockId","in":"path","description":"Block diagram ID","required":true,"schema":{"type":"string"}},{"name":"nodeId","in":"path","description":"Block node ID","required":true,"schema":{"type":"string"}},{"name":"search","in":"query","description":"Failure mode keyword search (trimmed, max 100 characters)","schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"blockNodeId":{"type":"string"},"referencedBlockNodeId":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"fmmDiagramType":{"type":"string","enum":["UNUSED"]},"rank":{"type":"string"},"complete":{"type":"string"},"transferFmmObject":{"type":"integer"}}}}}}}}},"DELETE:/api/v2/condition-library/{type}/{serial}":{"path":"/api/v2/condition-library/{type}/{serial}","method":"DELETE","operationId":"deleteConditionLibraryNode","summary":"Delete condition library node","description":"Deletes the target node and its subtree for the requested type. Root node deletion is not allowed.","tags":["Condition Library"],"parameters":[{"name":"type","in":"path","description":"Condition library type (stress|design|process)","required":true,"schema":{"type":"string","enum":["stress","design","process"]}},{"name":"serial","in":"path","description":"Condition library serial","required":true,"schema":{"minimum":0,"type":"integer","format":"int32"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/condition-library/{type}/tree":{"path":"/api/v2/condition-library/{type}/tree","method":"GET","operationId":"getConditionLibraryTree","summary":"Get condition library tree","description":"Legacy endpoint kept for backward compatibility. Prefer GET /{type}?view=tree.","tags":["Condition Library"],"parameters":[{"name":"type","in":"path","description":"Condition library type (stress|design|process)","required":true,"schema":{"type":"string","enum":["stress","design","process"]}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object"}}}}},"deprecated":true},"PATCH:/api/v2/condition-library/{type}/{serial}":{"path":"/api/v2/condition-library/{type}/{serial}","method":"PATCH","operationId":"updateConditionLibraryNode","summary":"Update condition library node","description":"Updates the node title by serial for the requested type. Duplicate titles under the same parent are rejected.","tags":["Condition Library"],"parameters":[{"name":"type","in":"path","description":"Condition library type (stress|design|process)","required":true,"schema":{"type":"string","enum":["stress","design","process"]}},{"name":"serial","in":"path","description":"Condition library serial","required":true,"schema":{"minimum":0,"type":"integer","format":"int32"}}],"requestBody":{"content":{"application/json":{"schema":{"required":["title"],"type":"object","properties":{"title":{"type":"string"}}}}},"required":true},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"serial":{"type":"integer"},"type":{"type":"string","enum":["STRESS","DESIGN","PROCESS"]},"title":{"type":"string"},"id":{"type":"string"},"parentId":{"type":"string"},"depth":{"type":"integer"},"rank":{"type":"integer"}}}}}}}},"POST:/api/v2/condition-library/{type}":{"path":"/api/v2/condition-library/{type}","method":"POST","operationId":"createConditionLibraryNode","summary":"Create condition library node","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).","tags":["Condition Library"],"parameters":[{"name":"type","in":"path","description":"Condition library type (stress|design|process)","required":true,"schema":{"type":"string","enum":["stress","design","process"]}}],"requestBody":{"content":{"application/json":{"schema":{"required":["title"],"type":"object","properties":{"title":{"type":"string"},"parentTag":{"type":"string"}}}}},"required":true},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"PUT:/api/v2/condition-library/{type}/order":{"path":"/api/v2/condition-library/{type}/order","method":"PUT","operationId":"updateConditionLibraryOrder","summary":"Update condition library order","description":"Updates rank values for sibling nodes in the requested type. All items must belong to the same parent and include serial/rank pairs.","tags":["Condition Library"],"parameters":[{"name":"type","in":"path","description":"Condition library type (stress|design|process)","required":true,"schema":{"type":"string","enum":["stress","design","process"]}}],"requestBody":{"content":{"application/json":{"schema":{"required":["items"],"type":"object","properties":{"items":{"maxItems":2147483647,"minItems":1,"type":"array","items":{"required":["rank","serial"],"type":"object","properties":{"serial":{"type":"integer","format":"int32"},"rank":{"type":"integer","format":"int32"}}}}}}}},"required":true},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/condition-library/{type}":{"path":"/api/v2/condition-library/{type}","method":"GET","operationId":"getConditionLibrary","summary":"Get condition library nodes","description":"Returns condition library nodes in flat or tree view for the requested type.","tags":["Condition Library"],"parameters":[{"name":"type","in":"path","description":"Condition library type (stress|design|process)","required":true,"schema":{"type":"string","enum":["stress","design","process"]}},{"name":"view","in":"query","description":"Response view type (flat|tree)","schema":{"type":"string","default":"flat"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object"}}}}}},"POST:/api/v2/condition-library-excel/{type}/{uuid}":{"path":"/api/v2/condition-library-excel/{type}/{uuid}","method":"POST","operationId":"importConditionLibraryFromExcel","summary":"Import condition library nodes from Excel","description":"Imports condition titles from an uploaded Excel file into the requested type and parent node. Blank titles and duplicate sibling titles are ignored.","tags":["Condition Library Excel"],"parameters":[{"name":"type","in":"path","description":"Condition library type (stress|design|process)","required":true,"schema":{"type":"string","enum":["stress","design","process"]}},{"name":"uuid","in":"path","description":"Upload UUID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"parentTag":{"type":"string"},"sheetIndex":{"type":"integer","format":"int32"},"titleColumnIndex":{"type":"integer","format":"int32"},"startRowNumber":{"type":"integer","format":"int32"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}},"x-dependency-warning":"REQUIRES PRIOR FILE UPLOAD via [POST /api/v2/files]. The {uuid} parameter is the file identifier returned by the upload endpoint."},"GET:/api/v2/divisions":{"path":"/api/v2/divisions","method":"GET","summary":"Search divisions","operationId":"list_6","description":"Returns paged divisions filtered by division name.","tags":["Division"],"parameters":[{"name":"search","in":"query","description":"Division name keyword","schema":{"type":"string"}},{"name":"page","in":"query","description":"Page number (starts from 1)","schema":{"type":"integer","format":"int32","default":1}},{"name":"size","in":"query","description":"Page size (max 100, default 50)","schema":{"type":"integer","format":"int32","default":50}}],"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"},"relatedDivisions":{"type":"array","items":{"type":"object","description":"(circular: DivisionDTO)"}}}}},"page":{"type":"integer"},"size":{"type":"integer"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}}}}}}}},"GET:/api/v2/divisions/{divisionId}":{"path":"/api/v2/divisions/{divisionId}","method":"GET","summary":"Get division details","operationId":"get_1","description":"Retrieves detailed information for a specific division (organizational unit, department, business unit) using its unique identifier. Returns the complete division profile including metadata, hierarchy, and configuration settings. Use this endpoint when you need to fetch division details for display, editing, or as a reference in other operations. Common use cases include: populating division dropdowns, validating division access permissions, retrieving division context for projects or PFMEA records, and displaying organizational structure information.","tags":["Division"],"parameters":[{"name":"divisionId","in":"path","description":"Division ID to retrieve","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"},"relatedDivisions":{"type":"array","items":{"type":"object","description":"(circular: DivisionDTO)"}}}}}}}}},"GET:/api/v2/projects/{projectId}/documents/categories/{documentCategory}":{"path":"/api/v2/projects/{projectId}/documents/categories/{documentCategory}","method":"GET","operationId":"listByCategory","summary":"List documents by category","description":"Retrieves all documents belonging to a specific category within a project (Filter / Query by type). Use this endpoint when you need to fetch documents filtered by their document category type, such as input files, output reports, analysis results, or reference materials. The category parameter allows you to narrow down the document list to a specific classification, enabling targeted document retrieval and organization.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"documentCategory","in":"path","required":true,"schema":{"type":"string","enum":["SYSTEM_DEFINITION","WORKSHEET","BLOCK_DIAGRAM","FMM_DIAGRAM"]}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string","enum":["UPLOAD"]},"value":{"type":"string"},"path":{"type":"string"},"fileSize":{"type":"string"},"uploadDate":{"type":"string","format":"date"},"category":{"type":"string","enum":["SYSTEM_DEFINITION","WORKSHEET","BLOCK_DIAGRAM","FMM_DIAGRAM"]}}}}}}}}},"POST:/api/v2/projects/{projectId}/documents/categories/{documentCategory}":{"path":"/api/v2/projects/{projectId}/documents/categories/{documentCategory}","method":"POST","operationId":"add_1","summary":"Add document to category","description":"Creates and registers a new document entry within a specific category for a project (Upload / Create / Attach file). Use this endpoint to add documents such as analysis reports, input data files, or reference materials to the project. The document will be classified under the specified category, enabling organized storage and retrieval. Requires project member role with NORMAL user level permissions.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"documentCategory","in":"path","required":true,"schema":{"type":"string","enum":["SYSTEM_DEFINITION","WORKSHEET","BLOCK_DIAGRAM","FMM_DIAGRAM"]}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"uuid":{"type":"string"},"value":{"type":"string"},"path":{"type":"string"},"type":{"type":"string","enum":["UPLOAD","URL"]}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string","enum":["UPLOAD"]},"value":{"type":"string"},"path":{"type":"string"},"fileSize":{"type":"string"},"uploadDate":{"type":"string","format":"date"},"category":{"type":"string","enum":["SYSTEM_DEFINITION","WORKSHEET","BLOCK_DIAGRAM","FMM_DIAGRAM"]}}}}}}}},"GET:/api/v2/projects/{projectId}/documents/{documentId}":{"path":"/api/v2/projects/{projectId}/documents/{documentId}","method":"GET","operationId":"get_7","summary":"Get document by ID","description":"Fetches detailed information for a specific document using its unique identifier (Retrieve / Fetch / View document details). Use this endpoint to obtain complete document metadata including name, category, path, creation timestamp, and associated file information. This is essential when you need to display document details, verify document existence, or access specific document properties before performing further operations like download or deletion.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"documentId","in":"path","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string","enum":["UPLOAD"]},"value":{"type":"string"},"path":{"type":"string"},"fileSize":{"type":"string"},"uploadDate":{"type":"string","format":"date"},"category":{"type":"string","enum":["SYSTEM_DEFINITION","WORKSHEET","BLOCK_DIAGRAM","FMM_DIAGRAM"]}}}}}}}},"DELETE:/api/v2/projects/{projectId}/documents/{documentId}":{"path":"/api/v2/projects/{projectId}/documents/{documentId}","method":"DELETE","operationId":"delete_5","summary":"Delete document","description":"Permanently removes a document from the project using its unique identifier (Remove / Erase document). This operation deletes the document record and disassociates it from the project. Use with caution as this action cannot be undone. Requires project member role with NORMAL user level permissions. Ensure you have the correct document ID before initiating deletion to avoid accidental data loss.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"documentId","in":"path","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"GET:/api/v2/projects/{projectId}/documents/{documentId}/download":{"path":"/api/v2/projects/{projectId}/documents/{documentId}/download","method":"GET","operationId":"getDownloadLink_2","summary":"Get document download link","description":"Generates a secure download URL for accessing the actual file associated with a document (Download file / Get file URL). Use this endpoint to obtain a temporary, authenticated link that allows users to download the document file. The link includes necessary security tokens to ensure only authorized users can access the file. This is the standard method for retrieving document files after you have identified the document ID through listing or search operations.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"documentId","in":"path","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"fileName":{"type":"string"},"downloadUri":{"type":"string"}}}}}}}},"GET:/api/v2/projects/{projectId}/documents":{"path":"/api/v2/projects/{projectId}/documents","method":"GET","operationId":"list_10","summary":"List all Documents","description":"Retrieves a comprehensive list of all documents associated with a specific project (Get all files / Fetch project documents / Query document library). Use this endpoint when you need to view, browse, or display the complete collection of documents within a project, including all categories and types. The response includes document metadata such as names, categories, paths, and timestamps, enabling users to navigate and manage the project document repository effectively.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string","enum":["UPLOAD"]},"value":{"type":"string"},"path":{"type":"string"},"fileSize":{"type":"string"},"uploadDate":{"type":"string","format":"date"},"category":{"type":"string","enum":["SYSTEM_DEFINITION","WORKSHEET","BLOCK_DIAGRAM","FMM_DIAGRAM"]}}}}}}}}},"GET:/api/v2/projects/{projectId}/documents/categories/{documentCategory}/path/{documentPath}":{"path":"/api/v2/projects/{projectId}/documents/categories/{documentCategory}/path/{documentPath}","method":"GET","operationId":"listByCategoryAndPath","summary":"List documents by category and path","description":"Fetches documents matching both a specific category and file path within a project (Filter by type and location / Query documents in folder). Use this endpoint for precise document filtering when you need to retrieve documents from a specific directory or subfolder within a category. The path parameter enables hierarchical navigation, allowing you to access documents organized in nested folder structures. This is particularly useful for browsing documents within specific subdirectories or locations.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"documentCategory","in":"path","required":true,"schema":{"type":"string","enum":["SYSTEM_DEFINITION","WORKSHEET","BLOCK_DIAGRAM","FMM_DIAGRAM"]}},{"name":"documentPath","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string","enum":["UPLOAD"]},"value":{"type":"string"},"path":{"type":"string"},"fileSize":{"type":"string"},"uploadDate":{"type":"string","format":"date"},"category":{"type":"string","enum":["SYSTEM_DEFINITION","WORKSHEET","BLOCK_DIAGRAM","FMM_DIAGRAM"]}}}}}}}}},"GET:/api/v2/excel/{uuid}":{"path":"/api/v2/excel/{uuid}","method":"GET","summary":"Parse all sheets in Excel file","description":"Extracts and returns ALL worksheets from an uploaded Excel file (.xlsx, .xls). Use this endpoint when you need complete workbook data including multiple sheets. The endpoint parses every tab/worksheet in the Excel file and returns them as a structured list with sheet metadata, row data, and cell values. This is ideal for bulk data extraction, complete workbook analysis, or when the sheet structure is unknown beforehand. Returns a list of POISheet objects containing sheet names, indices, and grid data. Requires valid file UUID from prior upload.","tags":["excel"],"operationId":"parseAll","x-dependency-warning":"REQUIRES PRIOR FILE UPLOAD via [POST /api/v2/files]. The {uuid} parameter is the file ID returned by the upload endpoint.","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}},{"name":"startRowNumber","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"reindexFromZero","in":"query","schema":{"type":"boolean","default":true}}],"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/excel/{uuid}/sheets/{sheetIndex}":{"path":"/api/v2/excel/{uuid}/sheets/{sheetIndex}","method":"GET","summary":"Parse specific sheet in Excel file","description":"Extracts and returns a SINGLE worksheet from an uploaded Excel file by its zero-based index. Use this endpoint for targeted data retrieval when you know which specific tab/worksheet you need. More efficient than parsing all sheets when working with large workbooks or when only specific sheet data is required. The endpoint returns a POISheet object containing the sheet name, index, and complete grid data with cell values. Ideal for incremental processing, specific tab extraction, or reducing payload size. Sheet index starts at 0 (first sheet). Requires valid file UUID from prior upload.","tags":["excel"],"operationId":"parseSheet","x-dependency-warning":"REQUIRES PRIOR FILE UPLOAD via [POST /api/v2/files]. The {uuid} parameter is the file ID returned by the upload endpoint.","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}},{"name":"sheetIndex","in":"path","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"startRowNumber","in":"query","schema":{"type":"integer","format":"int32"}},{"name":"reindexFromZero","in":"query","schema":{"type":"boolean","default":true}}],"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"POST:/api/v2/excel/generate":{"path":"/api/v2/excel/generate","method":"POST","summary":"Generate Excel File","description":"Generates a downloadable Excel (.xlsx) file programmatically based on user-provided column definitions and grid data payloads. Use this endpoint to dynamically construct custom spreadsheet reports, export tabular analysis results, or create structured Excel files from raw JSON arrays. Ideal for custom FMEA reporting, bulk data compilation, and on-the-fly spreadsheet generation. (Create Excel / Export to XLSX / Build Spreadsheet / Generate Report).","tags":[],"operationId":"generate","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"worksheetName":{"type":"string"},"columns":{"type":"array","items":{"type":"object","properties":{"width":{"type":"integer","format":"int32"},"type":{"type":"string"}}}},"rowsMeta":{"type":"object","additionalProperties":{"type":"object"}},"data":{"type":"array","items":{"type":"array","items":{"type":"object"}}},"mergeCells":{"type":"object","additionalProperties":{"type":"array","items":{"type":"integer","format":"int32"}}}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"PUT:/api/v2/projects/{projectId}/failure-modes/{failureModeId}/fmm-diagram":{"path":"/api/v2/projects/{projectId}/failure-modes/{failureModeId}/fmm-diagram","method":"PUT","operationId":"updateDiagram","summary":"Update FMM diagram","description":"Updates an existing FMM diagram for the target failure mode.","tags":["FMM Diagram"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"failureModeId","in":"path","description":"Failure mode ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"blockDiagramId":{"type":"string"},"fmmDiagramType":{"type":"string","enum":["UNUSED","NOT_SELECTED","TYPE_A","TYPE_C"]},"fmmBlockDiagramType":{"type":"string","enum":["Function","Structure","FunctionStructure","StructureFunction","Process"]},"fmeaType":{"type":"string","enum":["Design","Process","Equipment","FA","FTA","CPlan"]},"completed":{"type":"boolean"},"objects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"clientId":{"type":"string"},"oldId":{"type":"string"},"parentId":{"type":"string"},"clientParentId":{"type":"string"},"oldParentId":{"type":"string"},"referencedId":{"type":"string"},"objectType":{"type":"string","enum":["FAILURE_MODE","EFFECT","ITEM","EXTERNAL_ITEM","GROUP","CAUSE_U","CAUSE_I","STRESS","DESIGN","PROCESS"]},"name":{"type":"string"},"order":{"type":"integer","format":"int32"},"sourceId":{"type":"string"},"highItem_unused":{"type":"string"},"processType":{"type":"string"}}}},"deletedObjectIds":{"type":"array","items":{"type":"string"}}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"POST:/api/v2/projects/{projectId}/failure-modes/{failureModeId}/fmm-diagram":{"path":"/api/v2/projects/{projectId}/failure-modes/{failureModeId}/fmm-diagram","method":"POST","summary":"Create FMM diagram","description":"Creates an FMM diagram for the target failure mode.","tags":["FMM Diagram"],"operationId":"createDiagram","parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"failureModeId","in":"path","description":"Failure mode ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"blockDiagramId":{"type":"string"},"failureModeName":{"type":"string"},"blockName":{"type":"string"},"fmmDiagramType":{"type":"string","enum":["UNUSED","NOT_SELECTED","TYPE_A","TYPE_C"]},"objects":{"type":"array","items":{"type":"object","properties":{"type":{"type":"integer","format":"int32"},"name":{"type":"string"},"parentId":{"type":"string"},"clientId":{"type":"string"},"blockNodeId":{"type":"string"}}}}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/projects/{projectId}/failure-modes/{failureModeId}/fmm-diagram/nodes":{"path":"/api/v2/projects/{projectId}/failure-modes/{failureModeId}/fmm-diagram/nodes","method":"GET","operationId":"getNodes_1","summary":"Get FMM diagram nodes","description":"Returns FMM diagram nodes in list or tree view. Optional search parameters filter nodes and resolve diagrams by keyword.","tags":["FMM Diagram"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"failureModeId","in":"path","description":"Failure mode ID","required":true,"schema":{"type":"string"}},{"name":"view","in":"query","description":"Response view type (list|tree)","schema":{"type":"string","default":"list"}},{"name":"search","in":"query","description":"Node keyword search (trimmed, max 100 characters)","schema":{"type":"string"}},{"name":"failureModeSearch","in":"query","description":"Failure mode keyword search (trimmed, max 100 characters)","schema":{"type":"string"}},{"name":"type","in":"query","description":"Node type exact-match filter","schema":{"type":"string","enum":["FAILURE_MODE","EFFECT","ITEM","EXTERNAL_ITEM","GROUP","CAUSE_U","CAUSE_I","STRESS","DESIGN","PROCESS"]}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"projectId":{"type":"string"},"id":{"type":"string"},"failureModeId":{"type":"string"},"parentId":{"type":"string"},"type":{"type":"string","enum":["EFFECT","ITEM","EXTERNAL_ITEM","GROUP","CAUSE_U","CAUSE_I","STRESS","DESIGN","PROCESS"]},"name":{"type":"string"},"highItemName_unused":{"type":"string"},"blockNodeId":{"type":"string"},"fmeaType":{"type":"string"},"order":{"type":"integer"},"sourceId":{"type":"string"},"processType":{"type":"string"}}}}}}}}},"POST:/api/v2/files":{"path":"/api/v2/files","method":"POST","operationId":"upload","summary":"Upload files","description":"Initiates file upload by accepting one or more files via multipart/form-data and storing them in a temporary system folder. Returns a list of upload information objects, each containing a unique UUID identifier, original filename, and file size. The returned UUID serves as a temporary file reference that must be used in subsequent processing endpoints (e.g., Excel import, document attachment, data analysis workflows). This is the mandatory first step for any operation requiring file input. Supports batch upload of multiple files in a single request. Alternative terms: file transmission, document submission, attachment upload, bulk file transfer.","tags":[],"parameters":[],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"files":{"type":"array","items":{"type":"object","properties":{"contentDisposition":{"type":"object","properties":{"type":{"type":"string"},"parameters":{"type":"object","additionalProperties":{"type":"string"}},"fileName":{"type":"string"},"creationDate":{"type":"string","format":"date-time"},"modificationDate":{"type":"string","format":"date-time"},"readDate":{"type":"string","format":"date-time"},"size":{"type":"integer","format":"int64"}}},"entity":{"type":"object"},"headers":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"mediaType":{"type":"object","properties":{"type":{"type":"string"},"subtype":{"type":"string"},"parameters":{"type":"object","additionalProperties":{"type":"string"}},"wildcardSubtype":{"type":"boolean"},"wildcardType":{"type":"boolean"}}},"messageBodyWorkers":{"type":"object"},"parent":{"type":"object","properties":{"contentDisposition":{"type":"object","properties":{"type":{"type":"string"},"parameters":{"type":"object","additionalProperties":{"type":"string"}},"fileName":{"type":"string"},"creationDate":{"type":"string","format":"date-time"},"modificationDate":{"type":"string","format":"date-time"},"readDate":{"type":"string","format":"date-time"},"size":{"type":"integer","format":"int64"}}},"entity":{"type":"object"},"headers":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"mediaType":{"type":"object","properties":{"type":{"type":"string"},"subtype":{"type":"string"},"parameters":{"type":"object","additionalProperties":{"type":"string"}},"wildcardSubtype":{"type":"boolean"},"wildcardType":{"type":"boolean"}}},"messageBodyWorkers":{"type":"object"},"parent":{"type":"object"},"providers":{"type":"object"},"bodyParts":{"type":"array","items":{"type":"object","properties":{"contentDisposition":{"type":"object","properties":{"type":{"type":"string"},"parameters":{"type":"object","additionalProperties":{"type":"string"}},"fileName":{"type":"string"},"creationDate":{"type":"string","format":"date-time"},"modificationDate":{"type":"string","format":"date-time"},"readDate":{"type":"string","format":"date-time"},"size":{"type":"integer","format":"int64"}}},"entity":{"type":"object"},"headers":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"mediaType":{"type":"object","properties":{"type":{"type":"string"},"subtype":{"type":"string"},"parameters":{"type":"object","additionalProperties":{"type":"string"}},"wildcardSubtype":{"type":"boolean"},"wildcardType":{"type":"boolean"}}},"messageBodyWorkers":{"type":"object"},"parent":{"type":"object"},"providers":{"type":"object"},"parameterizedHeaders":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"parameters":{"type":"object","additionalProperties":{"type":"string"}}}}}}}}},"parameterizedHeaders":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"parameters":{"type":"object","additionalProperties":{"type":"string"}}}}}}}},"providers":{"type":"object"},"name":{"type":"string"},"value":{"type":"string"},"simple":{"type":"boolean"},"formDataContentDisposition":{"type":"object","properties":{"type":{"type":"string"},"parameters":{"type":"object","additionalProperties":{"type":"string"}},"fileName":{"type":"string"},"creationDate":{"type":"string","format":"date-time"},"modificationDate":{"type":"string","format":"date-time"},"readDate":{"type":"string","format":"date-time"},"size":{"type":"integer","format":"int64"},"name":{"type":"string"}}},"parameterizedHeaders":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"parameters":{"type":"object","additionalProperties":{"type":"string"}}}}}}}}}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}},"x-dependency-warning":"This endpoint is an INITIATOR. Subsequent file processing endpoints (e.g., Excel import, data analysis) require the UUID returned by this endpoint. Store the returned UUIDs and pass them to consumer endpoints that accept {uuid} path parameters."},"GET:/api/v2/fourm":{"path":"/api/v2/fourm","method":"GET","operationId":"list_7","summary":"List 4M analysis items","description":"Retrieves all 4M (Man, Machine, Material, Environment) analysis items with optional filtering. Supports querying by project ID (projectId) and single or double tags (tag, secondTag) for targeted searches. Use this endpoint to browse, filter, or search for existing 4M analysis records within a project context. Returns a comprehensive list of analysis entries that can be further processed or displayed.","tags":[],"parameters":[{"name":"projectId","in":"query","schema":{"type":"string"}},{"name":"tag","in":"query","schema":{"type":"string"}},{"name":"secondTag","in":"query","schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"POST:/api/v2/fourm":{"path":"/api/v2/fourm","method":"POST","operationId":"create_3","summary":"Create 4M analysis item","description":"Creates a new 4M (Man, Machine, Material, Environment) analysis item in the system. Accepts analysis data including categorization by the four M dimensions (Man/Personnel, Machine/Equipment, Material/Resources, Environment/Conditions). Use this endpoint to initiate a new 4M analysis, register factors for quality or risk assessment, or document production variables. Returns the complete created object with system-generated ID.","tags":[],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string"},"tag":{"type":"string"},"secondTag":{"type":"string"},"category":{"type":"string","enum":["Man","Machine","Material","Environment"]},"workElement":{"type":"string"},"functionRequirement":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/fourm/{id}":{"path":"/api/v2/fourm/{id}","method":"GET","operationId":"get_2","summary":"Get 4M analysis item by ID","description":"Retrieves a specific 4M analysis item by its unique identifier (id). Use this endpoint to fetch full details of an existing analysis record for viewing, editing preparation, or detailed examination. Returns complete object including all four M dimensions (Man, Machine, Material, Environment) and associated metadata. Ideal for drill-down operations, detailed inspection, or populating edit forms.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"PUT:/api/v2/fourm/{id}":{"path":"/api/v2/fourm/{id}","method":"PUT","operationId":"update_2","summary":"Update 4M analysis item","description":"Modifies an existing 4M analysis item identified by its ID. Accepts partial or complete updates to the analysis data including changes to categorization, descriptions, or any of the four M dimensions (Man, Machine, Material, Environment). Use this endpoint to correct, enhance, or evolve analysis records over time. Returns the updated object reflecting all changes applied.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"category":{"type":"string","enum":["Man","Machine","Material","Environment"]},"workElement":{"type":"string"},"functionRequirement":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"DELETE:/api/v2/fourm/{id}":{"path":"/api/v2/fourm/{id}","method":"DELETE","operationId":"delete_2","summary":"Delete 4M analysis item","description":"Permanently removes a 4M analysis item from the system using its unique identifier. This operation is irreversible and will eliminate all associated data including the four M dimension classifications (Man, Machine, Material, Environment). Use with caution for removing obsolete or incorrect analysis records. Returns no content upon successful deletion (204 status).","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"PUT:/api/v2/projects/{projectId}/high-items":{"path":"/api/v2/projects/{projectId}/high-items","method":"PUT","operationId":"update_5","summary":"Batch upsert and reorder high items by project","description":"Updates the project high-item list with batch upsert semantics. Existing items are matched by sequence or title, ranks are recalculated by input order, and omitted items are removed.","tags":["High Items"],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"topItems":{"type":"array","items":{"type":"string"}},"sequences":{"type":"array","items":{"type":"string"}}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/projects":{"path":"/api/v2/projects","method":"GET","operationId":"list_8","summary":"List project summaries","description":"If divisionId is provided, returns division-scoped active projects. Otherwise returns all active projects. When search is provided, keyword matching is applied.","tags":["Project"],"parameters":[{"name":"divisionId","in":"query","description":"Division ID","schema":{"type":"integer","format":"int32"}},{"name":"includeRelated","in":"query","description":"Whether to include mapped related divisions when divisionId is provided","schema":{"type":"boolean"}},{"name":"search","in":"query","description":"Unified keyword (project, title, model, item)","schema":{"type":"string"}}],"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["DESIGN","PROCESS","EQUIPMENT","FA","FTA","CPLAN"]},"master":{"type":"boolean"},"name":{"type":"string"},"item":{"type":"string"},"model":{"type":"string"},"description":{"type":"string"},"leaderName":{"type":"string"},"startDate":{"type":"string","format":"date"},"dueDate":{"type":"string","format":"date"},"status":{"type":"string","enum":["IN_PROGRESS","REFUSED","SELF_COMPLETED"]},"completedDate":{"type":"string","format":"date"},"updateDueDate":{"type":"string","format":"date"},"divisionName":{"type":"string"},"divisionScope":{"type":"string"},"worksheetTemplateName":{"type":"string"}}}}}}}}},"GET:/api/v2/projects/{projectId}":{"path":"/api/v2/projects/{projectId}","method":"GET","operationId":"get_3","summary":"Get project details","description":"Fetches complete project information including metadata, configuration, and current status. Use this endpoint to retrieve detailed project data for viewing, editing, or auditing purposes. Supports retrieving any project the authenticated user has access to.","tags":["Project"],"parameters":[{"name":"projectId","in":"path","description":"Project ID to retrieve","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["DESIGN","PROCESS","EQUIPMENT","FA","FTA","CPLAN"]},"master":{"type":"boolean"},"label":{"type":"boolean"},"active":{"type":"boolean"},"projectClass":{"type":"string"},"systemFunction":{"type":"string"},"systemRequirement":{"type":"string"},"item":{"type":"string"},"model":{"type":"string"},"startDate":{"type":"string","format":"date"},"dueDate":{"type":"string","format":"date"},"completedDate":{"type":"string","format":"date"},"updateDueDate":{"type":"string","format":"date"},"evaluationCriteria":{"type":"string"},"description":{"type":"string"},"members":{"type":"array","items":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"department":{"type":"string"},"division":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"},"relatedDivisions":{"type":"array","items":{"type":"object","description":"(circular: DivisionDTO)"}}}}}},"role":{"type":"string","enum":["LEADER","MEMBER","REVIEWER","APPROVAL","COMPLETION_REVIEWER","NONE"]}}}},"useApproval":{"type":"boolean"},"score":{"type":"integer"},"status":{"type":"string","enum":["IN_PROGRESS","REFUSED","SELF_COMPLETED"]},"divisionId":{"type":"integer"},"worksheetTemplateId":{"type":"integer"}}}}}}}},"GET:/api/v2/projects/my":{"path":"/api/v2/projects/my","method":"GET","operationId":"getSummaryList","summary":"Search my projects","description":"Returns paged project summaries filtered by search, fmeaType, status, and sort.","tags":["Project"],"parameters":[{"name":"search","in":"query","description":"Unified keyword (project, title, model, item)","schema":{"type":"string"}},{"name":"fmeaType","in":"query","description":"FMEA type filter (DESIGN, PROCESS, EQUIPMENT, FA, FTA, CPLAN)","schema":{"type":"string","enum":["Design","Process","Equipment","FA","FTA","CPlan"]}},{"name":"status","in":"query","description":"Project status filter","schema":{"type":"string","enum":["IN_PROGRESS","REFUSED","SELF_COMPLETED","REVIEW","APPROVE","SCORE","COMPLETED","ASK_MODIFY_REVIEW","ASK_MODIFY_APPROVE","DELAY","NA"]}},{"name":"sort","in":"query","description":"Sort format: (project|name|type|status):(asc|desc)","schema":{"type":"string"}},{"name":"page","in":"query","description":"Page number (starts from 1)","schema":{"type":"integer","format":"int32","default":1}},{"name":"size","in":"query","description":"Page size (max 100)","schema":{"type":"integer","format":"int32","default":20}}],"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["DESIGN","PROCESS","EQUIPMENT","FA","FTA","CPLAN"]},"master":{"type":"boolean"},"name":{"type":"string"},"item":{"type":"string"},"model":{"type":"string"},"description":{"type":"string"},"leaderName":{"type":"string"},"startDate":{"type":"string","format":"date"},"dueDate":{"type":"string","format":"date"},"status":{"type":"string","enum":["IN_PROGRESS","REFUSED","SELF_COMPLETED"]},"completedDate":{"type":"string","format":"date"},"updateDueDate":{"type":"string","format":"date"},"divisionName":{"type":"string"},"divisionScope":{"type":"string"},"worksheetTemplateName":{"type":"string"}}}},"page":{"type":"integer"},"size":{"type":"integer"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}}}}}}}},"GET:/api/v2/projects/{projectId}/summary":{"path":"/api/v2/projects/{projectId}/summary","method":"GET","operationId":"getSummary","summary":"Get project summary","description":"Fetches a condensed overview of project information including key metrics, status, and essential metadata. Use this for quick project previews, dashboard widgets, or when full project details are not required. Optimized for performance with minimal data transfer.","tags":["Project"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["DESIGN","PROCESS","EQUIPMENT","FA","FTA","CPLAN"]},"master":{"type":"boolean"},"name":{"type":"string"},"item":{"type":"string"},"model":{"type":"string"},"description":{"type":"string"},"leaderName":{"type":"string"},"startDate":{"type":"string","format":"date"},"dueDate":{"type":"string","format":"date"},"status":{"type":"string","enum":["IN_PROGRESS","REFUSED","SELF_COMPLETED"]},"completedDate":{"type":"string","format":"date"},"updateDueDate":{"type":"string","format":"date"},"divisionName":{"type":"string"},"divisionScope":{"type":"string"},"worksheetTemplateName":{"type":"string"}}}}}}}},"GET:/api/v2/projects/{projectId}/members":{"path":"/api/v2/projects/{projectId}/members","method":"GET","operationId":"getMembers","summary":"List project members","description":"Returns project members. When search is provided, keyword matching is applied.","tags":["Project"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"search","in":"query","description":"Unified keyword (id, name, email, department, role)","schema":{"type":"string"}}],"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"department":{"type":"string"},"division":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"},"relatedDivisions":{"type":"array","items":{"type":"object","description":"(circular: DivisionDTO)"}}}}}},"role":{"type":"string","enum":["LEADER","MEMBER","REVIEWER","APPROVAL","COMPLETION_REVIEWER","NONE"]}}}}}}}}},"GET:/api/v2/projects/{projectId}/join-requests":{"path":"/api/v2/projects/{projectId}/join-requests","method":"GET","operationId":"getJoinRequestsByProjectId","summary":"List project join requests","description":"Fetches all pending join requests for a specific project. Use this endpoint to review, approve, or reject users requesting access to the project. Requires project member role. Returns request details including requester information, request status, and timestamps for workflow management.","tags":["Project"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"requestId":{"type":"integer"},"projectId":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"department":{"type":"string"},"division":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"},"relatedDivisions":{"type":"array","items":{"type":"object","description":"(circular: DivisionDTO)"}}}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["PENDING","APPROVED","REJECTED"]},"revisions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"menuCode":{"type":"string","enum":["PROJECT","BLOCK","FMM","WORKSHEET","ATTACHED_FILE","WORKSHEET_UNIT","CONTROL_PLAN"]},"actionCode":{"type":"string","enum":["F","W","F","W"]},"projectId":{"type":"string"},"userId":{"type":"string"},"userName":{"type":"string"},"reportNo":{"type":"string"},"refId":{"type":"string"},"updatedDateTime":{"type":"string","format":"date-time"},"description":{"type":"string"},"updatingStatus":{"type":"integer"},"revisionNumber":{"type":"integer"}}}}}}}}}}}},"POST:/api/v2/projects/{projectId}/join-requests":{"path":"/api/v2/projects/{projectId}/join-requests","method":"POST","operationId":"createJoinRequest","summary":"Create a project join request","description":"Submits a new request to join a project. Use this endpoint when a user wants to request access to a restricted project. The request will be reviewed by existing project members who can approve or reject it. Requires no existing project membership. Returns the created request ID for tracking.","tags":["Project"],"parameters":[{"name":"projectId","in":"path","description":"Target project ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"*/*":{"schema":{"type":"object","properties":{"reason":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"PUT:/api/v2/projects/{projectId}/join-requests":{"path":"/api/v2/projects/{projectId}/join-requests","method":"PUT","operationId":"updateJoinRequests","summary":"Approve or reject project join requests in batch","description":"Batch updates multiple join requests simultaneously to approve or reject project access requests. Use this endpoint for efficient workflow management when processing multiple pending requests at once. Requires project member role. Accepts a list of request IDs with their approval status and optional messages.","tags":["Project"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","format":"int32"},"id":{"type":"integer","format":"int32"},"accepted":{"type":"boolean"},"reason":{"type":"string"}}}}}}},"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"PUT:/api/v2/projects/{projectId}/join-requests/{requestId}":{"path":"/api/v2/projects/{projectId}/join-requests/{requestId}","method":"PUT","operationId":"updateJoinRequest","summary":"Approve or reject a project join request","description":"Updates a specific join request to approve or reject a user's project access request. Use this endpoint for individual request processing when you need to review and respond to one request at a time. Requires project member role. Supports approval with optional response messages or rejection with reasons.","tags":["Project"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"requestId","in":"path","description":"Join request ID","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"accepted":{"type":"boolean"},"reason":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"GET:/api/v2/projects/{projectId}/high-items":{"path":"/api/v2/projects/{projectId}/high-items","method":"GET","operationId":"list_11","summary":"List high items by project","description":"Returns high items in the target project ordered by rank. Supports optional keyword search on high-item titles and is used by system-definition screens.","tags":["High Items"],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"search","in":"query","schema":{"type":"string"}}],"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"sequence":{"type":"integer"},"level":{"type":"integer"}}}}}}}}},"GET:/api/v2/recommendation-items":{"path":"/api/v2/recommendation-items","method":"GET","operationId":"getRecommendationItems","summary":"List recommended actions","description":"Returns paged recommended actions extracted from worksheet rows. projectId is optional and narrows query scope when provided.","tags":["Recommendation"],"parameters":[{"name":"projectId","in":"query","description":"Project ID filter","schema":{"type":"string"}},{"name":"status","in":"query","description":"Recommended action status filter (NotCompleted|In-Progress|Delay|Completed|All)","schema":{"type":"string"}},{"name":"search","in":"query","description":"Unified keyword for recommended action fields and worksheet cell values","schema":{"type":"string"}},{"name":"page","in":"query","description":"Page number (starts from 1)","schema":{"type":"integer","format":"int32","default":1}},{"name":"size","in":"query","description":"Page size (max 100)","schema":{"type":"integer","format":"int32","default":20}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"reportNo":{"type":"string"},"fmmId":{"type":"string"},"wsId":{"type":"integer"},"status":{"type":"string","enum":["UNKNOWN","COMPLETED","IN_PROGRESS","DELAY"]}}}},"page":{"type":"integer"},"size":{"type":"integer"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"},"includes":{"type":"object","properties":{"columnHeaders":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"key":{"type":"string"},"title":{"type":"string"},"type":{"type":"string"},"readOnly":{"type":"string"},"width":{"type":"integer"},"valign":{"type":"integer"},"halign":{"type":"integer"},"children":{"type":"array","items":{"type":"object","description":"(circular: ColumnHeader)"}}}}}}}}}}}}}},"GET:/api/v2/open/metrics/{apType}/constants":{"path":"/api/v2/open/metrics/{apType}/constants","method":"GET","summary":"Get metric constants","description":"Retrieves metric scoring constants (Severity, Occurrence, Detection, Action Priorities) for the specified Analysis Type. Supports two FMEA methodologies: 'aiag' (AIAG/VDA standard) and 'msr' (Machinery Safety Regulation). Use this endpoint to fetch valid rating scales and calculation parameters required for risk assessment analysis. Commonly used when initializing FMEA worksheets, validating metric values, or configuring dropdown options. The {apType} parameter is case-insensitive but must match supported types. Returns 400 error if type is invalid.","tags":[],"operationId":"getMetricConstants","parameters":[{"name":"apType","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"GET:/api/v2/system/context-version":{"path":"/api/v2/system/context-version","method":"GET","summary":"Get Context Version","description":"Fetches the current application version, deployment semantic tag, and build metadata associated with the specific API context path. Historically replaces legacy health-check endpoints. Use this modern endpoint to verify proper API deployment, check version compatibility before complex operations, or display software version in the UI footer. (Check Version / Get Release Tag / Context Information / API Revision).","tags":[],"operationId":"checkContext","parameters":[{"name":"contextPath","in":"query","schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/system/health":{"path":"/api/v2/system/health","method":"GET","summary":"System Health","description":"Performs a lightweight diagnostic check and retrieves the basic operational health status of the FMEA system. Use this endpoint for load balancer pinging, uptime monitoring services (e.g., Datadog, Pingdom), or ensuring backend connectivity before user authentication. Returns a simple success payload if the core services and database connections are operational. (Health Check / System Status / Ping API / Service Heartbeat).","tags":[],"operationId":"health","parameters":[],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/projects/{projectId}/system-definition/conditions":{"path":"/api/v2/projects/{projectId}/system-definition/conditions","method":"GET","operationId":"listConditions","summary":"List system definition conditions","description":"Returns system definition conditions in the target project by scope and type. Optional filters apply to search, division, project title, model, and item.","tags":["System Definition"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"scope","in":"query","description":"Condition scope (owned|candidate|all). If omitted, defaults to all.","schema":{"type":"string"}},{"name":"type","in":"query","description":"Condition type (stress|design|process). If omitted, returns all types.","schema":{"type":"string","enum":["stress","design","process"]}},{"name":"search","in":"query","description":"Condition keyword search (trimmed, max 100 characters)","schema":{"type":"string"}},{"name":"divisionId","in":"query","description":"Division filter for candidate scope (must be > 0)","schema":{"type":"integer","format":"int32"}},{"name":"projectTitle","in":"query","description":"Project title filter for candidate scope","schema":{"type":"string"}},{"name":"model","in":"query","description":"Model filter for candidate scope","schema":{"type":"string"}},{"name":"item","in":"query","description":"Item filter for candidate scope","schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"sequence":{"type":"integer"},"type":{"type":"string","enum":["STRESS","DESIGN","PROCESS"]},"scope":{"type":"string","enum":["OWNED","CANDIDATE","ALL"]},"title":{"type":"string"}}}}}}}}},"PUT:/api/v2/projects/{projectId}/system-definition/summary":{"path":"/api/v2/projects/{projectId}/system-definition/summary","method":"PUT","operationId":"updateSummary","summary":"Update system definition summary","description":"Updates system function and system requirement in the target project. For non-process projects, values are synchronized to the top rows of function and structure BOM.","tags":["System Definition"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"systemFunction":{"type":"string"},"systemRequirement":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"POST:/api/v2/projects/{projectId}/system-definition/conditions":{"path":"/api/v2/projects/{projectId}/system-definition/conditions","method":"POST","operationId":"createCondition","summary":"Create system definition condition","description":"Creates an owned condition in the target project for the requested type and title. If the same type/title already exists, the existing condition is returned.","tags":["System Definition"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"required":["title"],"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"}}}}},"required":true},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"sequence":{"type":"integer"},"type":{"type":"string","enum":["STRESS","DESIGN","PROCESS"]},"scope":{"type":"string","enum":["OWNED","CANDIDATE","ALL"]},"title":{"type":"string"}}}}}}}},"DELETE:/api/v2/projects/{projectId}/system-definition/conditions":{"path":"/api/v2/projects/{projectId}/system-definition/conditions","method":"DELETE","operationId":"deleteConditions","summary":"Delete system definition conditions","description":"Deletes owned conditions in the target project by sequence list. All requested sequences must exist or the request fails without partial deletion.","tags":["System Definition"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"sequences":{"type":"array","items":{"type":"integer","format":"int32"}}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"PATCH:/api/v2/projects/{projectId}/system-definition/conditions/{sequence}":{"path":"/api/v2/projects/{projectId}/system-definition/conditions/{sequence}","method":"PATCH","operationId":"updateCondition","summary":"Update system definition condition","description":"Updates the title of an owned condition identified by sequence in the target project. Duplicate titles within the same condition type are rejected.","tags":["System Definition"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"sequence","in":"path","description":"Condition sequence","required":true,"schema":{"minimum":1,"type":"integer","format":"int32"}}],"requestBody":{"content":{"application/json":{"schema":{"required":["title"],"type":"object","properties":{"title":{"type":"string"}}}}},"required":true},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"sequence":{"type":"integer"},"type":{"type":"string","enum":["STRESS","DESIGN","PROCESS"]},"scope":{"type":"string","enum":["OWNED","CANDIDATE","ALL"]},"title":{"type":"string"}}}}}}}},"GET:/api/v2/projects/{projectId}/system-definition-excel/conditions/export":{"path":"/api/v2/projects/{projectId}/system-definition-excel/conditions/export","method":"GET","operationId":"exportConditions","summary":"Export system definition conditions to Excel UUID","description":"Exports owned condition titles by type from the target project into a temporary Excel file and returns its UUID.","tags":["System Definition"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"type","in":"query","description":"Condition type (stress|design|process)","required":true,"schema":{"type":"string","enum":["stress","design","process"]}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"uuid":{"type":"object"}}}}}}}},"POST:/api/v2/projects/{projectId}/system-definition-excel/conditions/import/{uuid}":{"path":"/api/v2/projects/{projectId}/system-definition-excel/conditions/import/{uuid}","method":"POST","operationId":"importConditions","summary":"Import system definition conditions from Excel","description":"Imports condition titles from an uploaded Excel file into the target project and type. Duplicate and blank titles are ignored.","tags":["System Definition"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"uuid","in":"path","description":"Upload UUID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"sheetIndex":{"type":"integer","format":"int32"},"titleColumnIndex":{"type":"integer","format":"int32"},"startRowNumber":{"type":"integer","format":"int32"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{}}}},"x-dependency-warning":"REQUIRES PRIOR FILE UPLOAD via [POST /api/v2/files]. The {uuid} parameter is the file identifier returned by the upload endpoint."},"GET:/api/v2/template/action-status":{"path":"/api/v2/template/action-status","method":"GET","operationId":"getAll","summary":"Get all action status templates","description":"Retrieves a complete list of all action status templates available in the system. Action status templates define the possible states for improvement actions (e.g., 'Open', 'In Progress', 'Completed', 'Closed'). Use this endpoint when you need to populate dropdown menus, display available status options, or validate status references. The response includes the template ID and title for each action status. Synonyms: list action statuses, get all action states, retrieve status options, fetch action status catalog.","tags":[],"parameters":[],"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"}}}}}}}}},"POST:/api/v2/template/action-status":{"path":"/api/v2/template/action-status","method":"POST","operationId":"create_4","summary":"Create action status template","description":"Creates a new action status template with a custom title. This endpoint is used to define additional states for improvement actions beyond the default options (e.g., 'Under Review', 'On Hold', 'Cancelled'). Requires ADMIN user level privileges. The request body must contain a 'title' field specifying the status name. Upon successful creation, returns the location URI of the new resource. Use this endpoint when you need to extend the available action status options for your organization's workflow. Synonyms: add action status, create new action state, define status template, add status option.","tags":[],"parameters":[],"requestBody":{"content":{"*/*":{"schema":{"type":"object","properties":{"title":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"GET:/api/v2/template/action-status/{id}":{"path":"/api/v2/template/action-status/{id}","method":"GET","operationId":"getById","summary":"Get action status template by ID","description":"Retrieves a specific action status template by its unique identifier. Use this endpoint when you need to view detailed information about a particular action status, validate an ID reference, or fetch the title of a specific status. Returns 404 Not Found if the specified ID does not exist. The response includes the template ID and title fields. This is useful for displaying current status information or verifying status existence before updates. Synonyms: get action status by ID, fetch specific action state, retrieve status template details, find action status.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"PUT:/api/v2/template/action-status/{id}":{"path":"/api/v2/template/action-status/{id}","method":"PUT","operationId":"update_3","summary":"Update action status template","description":"Updates an existing action status template's information. This endpoint allows administrators to modify the title of an action status template. Use this endpoint when you need to rename a status, correct typos, or standardize status terminology. Requires ADMIN user level privileges. The request body must contain a 'title' field with the new status name. The path parameter specifies the ID of the status template to update. Returns the updated DTO in the response. Synonyms: modify action status, edit action state, change status title, rename action status.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"*/*":{"schema":{"type":"object","properties":{"title":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"DELETE:/api/v2/template/action-status/{id}":{"path":"/api/v2/template/action-status/{id}","method":"DELETE","operationId":"delete_3","summary":"Delete action status template","description":"Permanently removes an action status template from the system. This endpoint is used to delete obsolete or unused action status options. Requires ADMIN user level privileges. The path parameter specifies the ID of the status template to delete. Use with caution as this operation cannot be undone. Returns 204 No Content on successful deletion. Consider whether any existing actions reference this status before deletion to avoid data integrity issues. Synonyms: remove action status, delete action state, eliminate status template, remove status option.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"default response","content":{"*/*":{}}}}},"GET:/api/v2/users":{"path":"/api/v2/users","method":"GET","summary":"Search users","description":"Returns paged users filtered by search, dept, and level.","operationId":"list_9","tags":["User"],"parameters":[{"name":"search","in":"query","description":"Unified keyword (id, name, englishName, email, department)","schema":{"type":"string"}},{"name":"dept","in":"query","description":"Department exact-match filter","schema":{"type":"string"}},{"name":"level","in":"query","description":"User level filter (ADMIN, NORMAL, READER)","schema":{"type":"string","enum":["A","N","R"]}},{"name":"page","in":"query","description":"Page number (starts from 1)","schema":{"type":"integer","format":"int32","default":1}},{"name":"size","in":"query","description":"Page size (max 100)","schema":{"type":"integer","format":"int32","default":20}}],"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"department":{"type":"string"},"divisionId":{"type":"integer"}}}},"page":{"type":"integer"},"size":{"type":"integer"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"},"includes":{"type":"object","properties":{"divisions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"},"relatedDivisions":{"type":"array","items":{"type":"object","description":"(circular: DivisionDTO)"}}}}}}}}}}}}}},"GET:/api/v2/users/{userId}":{"path":"/api/v2/users/{userId}","method":"GET","operationId":"get_4","summary":"Get user details","description":"Retrieves detailed user profile information by user ID. Use this endpoint to fetch user account details, profile data, or user metadata for display purposes. This is commonly used when you need to show user information in UI components, validate user existence, or retrieve user context for other operations. The endpoint returns the complete user DTO including all available user attributes. Requires NORMAL user level or higher authentication.","tags":["User"],"parameters":[{"name":"userId","in":"path","description":"User ID to retrieve","required":true,"schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"department":{"type":"string"},"division":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"},"relatedDivisions":{"type":"array","items":{"type":"object","description":"(circular: DivisionDTO)"}}}}}}}}}}},"GET:/api/v2/users/my/project-join-requests":{"path":"/api/v2/users/my/project-join-requests","method":"GET","operationId":"listMyProjectJoinRequests","summary":"List my project join requests","description":"Retrieves all project join requests submitted by the currently authenticated user. Use this endpoint to list pending invitations, access requests, or project membership requests that you have submitted. The response includes the status of each request (pending, approved, rejected) and associated project details. This is useful for showing users their request history, checking request status, or managing pending access requests. The endpoint automatically filters results based on the authenticated user's identity from the session context. Requires READER user level or higher authentication. Supports optional filtering by specific project ID via the projectId query parameter.","tags":["User"],"parameters":[{"name":"projectId","in":"query","description":"Optional project ID filter","schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"requestId":{"type":"integer"},"projectId":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"department":{"type":"string"},"division":{"type":"object","properties":{"id":{"type":"integer"},"no":{"type":"integer"},"name":{"type":"string"},"code":{"type":"string"},"relatedDivisions":{"type":"array","items":{"type":"object","description":"(circular: DivisionDTO)"}}}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["PENDING","APPROVED","REJECTED"]},"revisions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"menuCode":{"type":"string","enum":["PROJECT","BLOCK","FMM","WORKSHEET","ATTACHED_FILE","WORKSHEET_UNIT","CONTROL_PLAN"]},"actionCode":{"type":"string","enum":["F","W","F","W"]},"projectId":{"type":"string"},"userId":{"type":"string"},"userName":{"type":"string"},"reportNo":{"type":"string"},"refId":{"type":"string"},"updatedDateTime":{"type":"string","format":"date-time"},"description":{"type":"string"},"updatingStatus":{"type":"integer"},"revisionNumber":{"type":"integer"}}}}}}}}}}}},"GET:/api/v2/worksheet-templates/{id}":{"path":"/api/v2/worksheet-templates/{id}","method":"GET","operationId":"get_6","summary":"Get worksheet template","description":"Returns a worksheet template. When search is provided, template headers are keyword-filtered.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"search","in":"query","description":"Worksheet template header keyword search (trimmed, max 100 characters)","schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"projectType":{"type":"string","enum":["DESIGN","PROCESS","EQUIPMENT","FA","FTA","CPLAN"]},"category":{"type":"string","enum":["AIAG","AIAG_VDA","FMEA_MSR","STANDARD"]},"name":{"type":"string"},"order":{"type":"integer"},"defaultFlag":{"type":"boolean"},"active":{"type":"boolean"},"headers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"worksheetTemplateId":{"type":"integer"},"columnId":{"type":"integer"},"columnKey":{"type":"string"},"dataType":{"type":"string","enum":["INTEGER","BOOLEAN","TEXT","DATE","REFER"]},"parentId":{"type":"integer"},"groupHeader":{"type":"boolean"},"name":{"type":"string"},"width":{"type":"integer"},"readOnly":{"type":"boolean"},"mergeGroup":{"type":"integer"},"order":{"type":"integer"},"vAlign":{"type":"integer"},"hAlign":{"type":"integer"},"style":{"type":"string"},"description":{"type":"string"}}}}}}}}}}},"GET:/api/v2/projects/{projectId}/worksheets":{"path":"/api/v2/projects/{projectId}/worksheets","method":"GET","summary":"Get worksheet summaries","description":"Retrieves a list of all worksheet summaries within a project. This endpoint provides a high-level overview (summary/directory) of available worksheets, excluding detailed content. Use this to browse, list, or enumerate worksheets before fetching specific worksheet details. The response contains basic metadata such as report numbers and titles. Ideal for dashboard views, worksheet selection interfaces, or getting a quick inventory of all worksheets in a project. No authentication required for read access.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}}],"operationId":"getSummaries","responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"reportNo":{"type":"string"},"name":{"type":"string"},"item":{"type":"string"},"analysisLevel":{"type":"string"},"blockDiagramType":{"type":"string","enum":["FUNCTION","STRUCTURE","FUNCTION_STRUCTURE","STRUCTURE_FUNCTION","PROCESS","SUPER_SYSTEM","FUNCTION_ANALYSIS"]},"templateName":{"type":"string"},"description":{"type":"string"},"improvementMetrics":{"type":"object","properties":{"before":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"average":{"type":"integer"}}},"after":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"average":{"type":"integer"}}}}},"createdBy":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedBy":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}}},"POST:/api/v2/projects/{projectId}/worksheets":{"path":"/api/v2/projects/{projectId}/worksheets","method":"POST","summary":"Create worksheet","description":"Creates a new worksheet within the specified project. Use this endpoint to initialize a blank worksheet, set up a new analysis document, or establish a fresh worksheet structure. The request accepts worksheet creation parameters via WorksheetCreationDTO. Upon successful creation, returns the report number (reportNoSimple) of the newly created worksheet. Requires NORMAL user level and PROJECT MEMBER role. This is the initiating action for any worksheet-based workflow. Common use cases include: starting a new FMEA analysis, creating additional worksheets for different subsystems, or generating worksheet templates.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"blockDiagramId":{"type":"string"},"analysisLevel":{"type":"string"},"nextReportNo":{"type":"string"},"failureModeIds":{"type":"array","items":{"type":"string"}},"worksheetTemplateId":{"type":"integer","format":"int32"},"description":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"*/*":{}}}},"operationId":"create_5"},"GET:/api/v2/projects/{projectId}/worksheets/{reportNoSimple}":{"path":"/api/v2/projects/{projectId}/worksheets/{reportNoSimple}","method":"GET","summary":"Get worksheet by report number","description":"Fetches the complete details of a specific worksheet identified by its report number. The reportNoSimple parameter accepts formats like '3' or '3-1' (handling sub-worksheets via ReportNoSetDTO). Returns the full worksheet data including all rows, columns, headers, and cell values. Use this endpoint after listing summaries to retrieve detailed content for editing or analysis. Requires NORMAL user level. Common scenarios include: loading a worksheet for editing, viewing worksheet content, exporting worksheet data, or fetching worksheet structure for UI rendering. This is the primary read operation for full worksheet content.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"reportNoSimple","in":"path","required":true,"schema":{"type":"string"}}],"operationId":"get_5","responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"analysisLevel":{"type":"string"},"reportNo":{"type":"string"},"serial":{"type":"integer"},"blockDiagram":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["FUNCTION","STRUCTURE","FUNCTION_STRUCTURE","STRUCTURE_FUNCTION","PROCESS","SUPER_SYSTEM","FUNCTION_ANALYSIS"]},"alias":{"type":"string"},"order":{"type":"integer"},"description":{"type":"string"},"numberFormat":{"type":"string"}}},"worksheetTemplateId":{"type":"integer"},"description":{"type":"string"}}}}}}}},"PUT:/api/v2/projects/{projectId}/worksheets/{reportNoSimple}":{"path":"/api/v2/projects/{projectId}/worksheets/{reportNoSimple}","method":"PUT","summary":"Update worksheet","description":"Updates and saves changes to an existing worksheet identified by its report number. Accepts WorksheetSaveDTO containing modified worksheet data including cell values, structure changes, and metadata updates. The reportNoSimple parameter supports both simple numbers ('3') and sub-worksheet notation ('3-1'). All changes are persisted to the database. Requires NORMAL user level and PROJECT MEMBER role with write permissions. Common use cases: saving worksheet edits, updating cell values, modifying worksheet structure, applying bulk changes, or synchronizing client-side modifications. This is the primary write operation for worksheets and should be called after any user modifications to persist data.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"reportNoSimple","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"failureModeWorksheets":{"type":"array","items":{"required":["id"],"type":"object","properties":{"id":{"type":"integer","format":"int32"},"clientId":{"type":"string"},"failureModeId":{"type":"string"},"rows":{"type":"array","items":{"required":["id"],"type":"object","properties":{"id":{"type":"integer","format":"int32"},"clientId":{"type":"string"},"columns":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","format":"int32"},"value":{"type":"string"},"style":{"type":"string"}}}},"followUps":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string"}}}},"fmmNodeId":{"type":"string"}}}},"order":{"type":"integer","format":"int32"}}}},"clientId":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"clientId":{"type":"string"},"id":{"type":"string"},"target":{"type":"string","enum":["WORKSHEET_ID","FAILURE_MODE_WORKSHEET_ID","WORKSHEET_ROW_ID","BLOCK_NODE_ID","BLOCK_REFERENCED_ID","FMM_OBJECT_ID"]}}}}}}}},"operationId":"save_7"},"DELETE:/api/v2/projects/{projectId}/worksheets/{reportNoSimple}":{"path":"/api/v2/projects/{projectId}/worksheets/{reportNoSimple}","method":"DELETE","summary":"Delete worksheet","description":"Permanently removes a worksheet from the project using its report number identifier. The reportNoSimple parameter accepts formats like '3' or '3-1' for sub-worksheets. This operation is irreversible and will delete all worksheet data including rows, columns, cell values, and associated metadata. Requires NORMAL user level and PROJECT MEMBER role. Use with caution as deleted worksheets cannot be recovered without database restore. Common scenarios: removing obsolete worksheets, cleaning up test data, deleting unused analysis documents, or managing worksheet lifecycle. Consider archiving instead of deleting if the worksheet might be needed for future reference.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"reportNoSimple","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"failureModeWorksheets":{"type":"array","items":{"required":["id"],"type":"object","properties":{"id":{"type":"integer","format":"int32"},"clientId":{"type":"string"},"failureModeId":{"type":"string"},"rows":{"type":"array","items":{"required":["id"],"type":"object","properties":{"id":{"type":"integer","format":"int32"},"clientId":{"type":"string"},"columns":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","format":"int32"},"value":{"type":"string"},"style":{"type":"string"}}}},"followUps":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string"}}}},"fmmNodeId":{"type":"string"}}}},"order":{"type":"integer","format":"int32"}}}},"clientId":{"type":"string"}}}}}},"responses":{"default":{"description":"default response","content":{"*/*":{}}}},"operationId":"delete_4"},"PUT:/api/v2/projects/{projectId}/worksheet-excel/{uuid}":{"path":"/api/v2/projects/{projectId}/worksheet-excel/{uuid}","method":"PUT","summary":"Update worksheet Excel","description":"Updates an existing worksheet by importing data from an uploaded Excel file (.xlsx, .xls). Use this endpoint to modify worksheet contents, replace existing data, or refresh worksheet records with new Excel data. The endpoint parses the uploaded Excel file and updates the corresponding worksheet record. This is the primary method for editing worksheet data through Excel import. Requires project member role.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"reportNo":{"type":"string"},"mappings":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","format":"int32"},"columnId":{"type":"integer","format":"int32"}}}},"startRow":{"type":"integer","format":"int32"},"templateId":{"type":"integer","format":"int32"}}}}}},"responses":{"default":{"description":"default response","content":{"*/*":{}}}},"operationId":"update_4","x-dependency-warning":"REQUIRES PRIOR FILE UPLOAD via [POST /api/v2/files]. The {uuid} parameter is the file ID returned by the upload endpoint."},"POST:/api/v2/projects/{projectId}/worksheet-excel/{uuid}":{"path":"/api/v2/projects/{projectId}/worksheet-excel/{uuid}","method":"POST","summary":"Add worksheet Excel","description":"Creates a new worksheet by importing data from an uploaded Excel file (.xlsx, .xls). Use this endpoint to add a new worksheet record, create worksheet entries from Excel, or import worksheet data from spreadsheet files. The endpoint parses the uploaded Excel file and creates a new worksheet with the data. Returns the created worksheet's report number for reference. Requires project member role.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"reportNo":{"type":"string"},"mappings":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","format":"int32"},"columnId":{"type":"integer","format":"int32"}}}},"startRow":{"type":"integer","format":"int32"},"templateId":{"type":"integer","format":"int32"}}}}}},"responses":{"default":{"description":"default response","content":{"*/*":{}}}},"operationId":"add","x-dependency-warning":"REQUIRES PRIOR FILE UPLOAD via [POST /api/v2/files]. The {uuid} parameter is the file ID returned by the upload endpoint."},"GET:/api/v2/projects/{projectId}/worksheet-excel/{reportNoSimple}":{"path":"/api/v2/projects/{projectId}/worksheet-excel/{reportNoSimple}","method":"GET","summary":"Get worksheet Excel download link","description":"Generates a download link for a worksheet Excel file by report number. Use this endpoint to export worksheet data, download worksheet as Excel, or retrieve the spreadsheet file for offline editing. The link provides access to the Excel file associated with the specified worksheet report number. Requires reader-level access or higher.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"reportNoSimple","in":"path","required":true,"schema":{"type":"string"}}],"operationId":"getDownloadLink_1","responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"fileName":{"type":"string"},"downloadUri":{"type":"string"}}}}}}}},"GET:/api/v2/projects/{projectId}/worksheet-excel/{uuid}/metadata":{"path":"/api/v2/projects/{projectId}/worksheet-excel/{uuid}/metadata","method":"GET","summary":"Get worksheet Excel metadata","description":"Extracts metadata from an uploaded Excel file without processing the full data. Use this endpoint to preview file information, validate Excel structure, inspect worksheet contents, or retrieve file properties before saving. Returns metadata including sheet names, column headers, and data structure. Useful for pre-validating Excel files before add/update operations. Requires project member role.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}}],"operationId":"getMetadata","x-dependency-warning":"REQUIRES PRIOR FILE UPLOAD via [POST /api/v2/files]. The {uuid} parameter is the file ID returned by the upload endpoint.","responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string"},"reportNo":{"type":"string"},"templateId":{"type":"integer"},"idsByFailureMode":{"type":"array","items":{"type":"integer"}},"latestModified":{"type":"string","format":"date-time"},"targetModified":{"type":"string","format":"date-time"}}}}}}}},"GET:/api/v2/projects/{projectId}/worksheet-excel/{reportNoSimple}/sheets":{"path":"/api/v2/projects/{projectId}/worksheet-excel/{reportNoSimple}/sheets","method":"GET","summary":"Get Excel Sheets List","description":"Fetches a complete list of available Excel worksheets/tabs associated with a specific previously generated or uploaded Excel report. Ideal for previewing workbook structure, selecting specific sheets for analysis, or retrieving metadata before detailed extraction. (List sheets / View Excel tabs / Get available worksheets).","tags":[],"operationId":"getSheets","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"reportNoSimple","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":null,"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}}}},"GET:/api/v2/projects/{projectId}/worksheets/failuremode/{failureModeId}":{"path":"/api/v2/projects/{projectId}/worksheets/failuremode/{failureModeId}","method":"GET","summary":"Get worksheet by failure mode","description":"Fetches the complete worksheet data associated with a specific failure mode within a project. Use this endpoint to retrieve, load, or view detailed failure mode analysis worksheets including RPN calculations, risk assessments, and mitigation strategies. This is essential for reviewing existing failure mode documentation, conducting quality audits, or preparing data for editing operations. The endpoint returns structured worksheet content that can be used for analysis, reporting, or further modification through the update endpoint.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"failureModeId","in":"path","required":true,"schema":{"type":"string"}}],"operationId":"getByFailureMode","responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"reportNo":{"type":"string"},"failureModeId":{"type":"string"},"order":{"type":"integer"}}}}}}}},"POST:/api/v2/projects/{projectId}/worksheets/failuremode/{failureModeId}":{"path":"/api/v2/projects/{projectId}/worksheets/failuremode/{failureModeId}","method":"POST","summary":"Create worksheet by failure mode","description":"Generates a new worksheet for a specific failure mode within a project. Use this endpoint to initialize, set up, or create failure mode analysis worksheets. This operation establishes a structured worksheet template linked to the identified failure mode, optionally associating it with a block diagram via the blockDiagramId query parameter. Essential for starting new failure mode analyses, initiating risk assessment workflows, or expanding project documentation coverage. The created worksheet provides a framework for capturing RPN calculations, failure effects, causes, and recommended actions.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"failureModeId","in":"path","required":true,"schema":{"type":"string"}},{"name":"blockDiagramId","in":"query","schema":{"type":"string"}}],"operationId":"createByFailureMode","responses":{"default":{"description":"default response","content":{"application/json":{}}}}},"GET:/api/v2/projects/{projectId}/worksheets/{reportNo}/headers":{"path":"/api/v2/projects/{projectId}/worksheets/{reportNo}/headers","method":"GET","summary":"Get worksheet headers","description":"Returns worksheet headers copied for the worksheet. When search is provided, keyword matching is applied.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"reportNo","in":"path","required":true,"schema":{"type":"string"}},{"name":"search","in":"query","description":"Worksheet header keyword search (trimmed, max 100 characters)","schema":{"type":"string"}}],"operationId":"getHeaders","responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"columnId":{"type":"integer"},"columnKey":{"type":"string"},"dataType":{"type":"string","enum":["INTEGER","BOOLEAN","TEXT","DATE","REFER"]},"parentId":{"type":"integer"},"groupHeader":{"type":"boolean"},"name":{"type":"string"},"width":{"type":"integer"},"readOnly":{"type":"boolean"},"mergeGroup":{"type":"integer"},"order":{"type":"integer"},"vAlign":{"type":"integer"},"hAlign":{"type":"integer"},"style":{"type":"string"},"description":{"type":"string"}}}}}}}}},"PUT:/api/v2/projects/{projectId}/worksheets/{reportNo}/{failureModeId}":{"path":"/api/v2/projects/{projectId}/worksheets/{reportNo}/{failureModeId}","method":"PUT","summary":"Save worksheet by failure mode","description":"Updates and persists worksheet data for a specific failure mode within a designated report. Use this endpoint to save, modify, edit, or update failure mode analysis content including severity ratings, occurrence probabilities, detection rankings, RPN calculations, recommended actions, and status tracking. This operation overwrites existing data with the provided FailureModeWorksheetSaveDTO payload, ensuring data persistence and version control. Essential for recording analysis progress, updating risk assessments after reviews, documenting corrective actions, or maintaining live risk evaluation data. Requires project member role authentication and supports iterative refinement of failure mode analyses throughout the project lifecycle.","tags":[],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"reportNo","in":"path","required":true,"schema":{"type":"string"}},{"name":"failureModeId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"required":["id"],"type":"object","properties":{"id":{"type":"integer","format":"int32"},"clientId":{"type":"string"},"failureModeId":{"type":"string"},"rows":{"type":"array","items":{"required":["id"],"type":"object","properties":{"id":{"type":"integer","format":"int32"},"clientId":{"type":"string"},"columns":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","format":"int32"},"value":{"type":"string"},"style":{"type":"string"}}}},"followUps":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string"}}}},"fmmNodeId":{"type":"string"}}}},"order":{"type":"integer","format":"int32"}}}}}},"responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"clientId":{"type":"string"},"id":{"type":"string"},"target":{"type":"string","enum":["WORKSHEET_ID","FAILURE_MODE_WORKSHEET_ID","WORKSHEET_ROW_ID","BLOCK_NODE_ID","BLOCK_REFERENCED_ID","FMM_OBJECT_ID"]}}}}}}}},"operationId":"saveByFailureMode"},"GET:/api/v2/worksheet-templates/{id}/headers":{"path":"/api/v2/worksheet-templates/{id}/headers","method":"GET","summary":"Get worksheet template headers","description":"Returns worksheet template headers. When search is provided, keyword matching is applied.","tags":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"search","in":"query","description":"Worksheet template header keyword search (trimmed, max 100 characters)","schema":{"type":"string"}}],"operationId":"getHeaders_1","responses":{"default":{"description":"default response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"worksheetTemplateId":{"type":"integer"},"columnId":{"type":"integer"},"columnKey":{"type":"string"},"dataType":{"type":"string","enum":["INTEGER","BOOLEAN","TEXT","DATE","REFER"]},"parentId":{"type":"integer"},"groupHeader":{"type":"boolean"},"name":{"type":"string"},"width":{"type":"integer"},"readOnly":{"type":"boolean"},"mergeGroup":{"type":"integer"},"order":{"type":"integer"},"vAlign":{"type":"integer"},"hAlign":{"type":"integer"},"style":{"type":"string"},"description":{"type":"string"}}}}}}}}}}