Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
mitkErrorResponse.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef mitkErrorResponse_h
14 #define mitkErrorResponse_h
15 
16 #include <nlohmann/json.hpp>
17 #include <string>
18 #include <vector>
19 
20 #include <MitkRESTAPIExports.h>
21 
22 namespace mitk
23 {
31  {
32  public:
34 
35  // Common error codes
36  static constexpr const char* CODE_INVALID_REQUEST = "INVALID_REQUEST";
37  static constexpr const char* CODE_NODE_NOT_FOUND = "NODE_NOT_FOUND";
38  static constexpr const char* CODE_PROPERTY_NOT_FOUND = "PROPERTY_NOT_FOUND";
39  static constexpr const char* CODE_DATASTORAGE_NOT_AVAILABLE = "DATASTORAGE_NOT_AVAILABLE";
40  static constexpr const char* CODE_INTERNAL_ERROR = "INTERNAL_ERROR";
41  static constexpr const char* CODE_PROPERTY_PROTECTED = "PROPERTY_PROTECTED";
42  static constexpr const char* CODE_NODE_HAS_CHILDREN = "NODE_HAS_CHILDREN";
43  static constexpr const char* CODE_NO_DATA = "NO_DATA";
44  static constexpr const char* CODE_NO_GEOMETRY = "NO_GEOMETRY";
45  static constexpr const char* CODE_RENDERING_ERROR = "RENDERING_ERROR";
46  static constexpr const char* CODE_CIRCULAR_HIERARCHY_REFERENCE = "CIRCULAR_HIERARCHY_REFERENCE";
47  static constexpr const char* CODE_UNSUPPORTED_FORMAT = "UNSUPPORTED_FORMAT";
48  static constexpr const char* CODE_SERIALIZATION_ERROR = "SERIALIZATION_ERROR";
49  static constexpr const char* CODE_FILE_NOT_FOUND = "FILE_NOT_FOUND";
50  static constexpr const char* CODE_FILE_READ_ERROR = "FILE_READ_ERROR";
51  static constexpr const char* CODE_TRANSFER_MODE_NOT_AVAILABLE = "TRANSFER_MODE_NOT_AVAILABLE";
52  static constexpr const char* CODE_ACCESS_DENIED = "ACCESS_DENIED";
53  static constexpr const char* CODE_UNAUTHORIZED = "UNAUTHORIZED";
54  static constexpr const char* CODE_RATE_LIMIT_EXCEEDED = "RATE_LIMIT_EXCEEDED";
55  static constexpr const char* CODE_FILE_ACCESS_DENIED = "FILE_ACCESS_DENIED";
56  static constexpr const char* CODE_RENDER_WINDOW_NOT_AVAILABLE = "RENDER_WINDOW_NOT_AVAILABLE";
57  static constexpr const char* CODE_TIME_NAVIGATION_NOT_AVAILABLE = "TIME_NAVIGATION_NOT_AVAILABLE";
58  static constexpr const char* CODE_TIME_STEPPER_NOT_AVAILABLE = "TIME_STEPPER_NOT_AVAILABLE";
59  static constexpr const char* CODE_EDITOR_NOT_ACTIVE = "EDITOR_NOT_ACTIVE";
60  static constexpr const char* CODE_RENDER_WINDOW_NOT_FOUND = "RENDER_WINDOW_NOT_FOUND";
61  static constexpr const char* CODE_UNSUPPORTED_OPERATION = "UNSUPPORTED_OPERATION";
62  static constexpr const char* CODE_RENDERER_UNAVAILABLE = "RENDERER_UNAVAILABLE";
63 
74  static Json Create(
75  const std::string& code,
76  const std::string& title,
77  const std::string& detail,
78  int status,
79  const std::string& instance = "");
80 
88  static Json NodeNotFound(const std::string& uid, const std::string& instance = "");
89 
99  const std::string& propertyKey,
100  const std::string& nodeUid,
101  const std::string& instance = "");
102 
109  static Json DataStorageNotAvailable(const std::string& instance = "");
110 
118  static Json InvalidRequest(const std::string& detail, const std::string& instance = "");
119 
127  static Json InternalError(const std::string& detail, const std::string& instance = "");
128 
136  static Json PropertyProtected(const std::string& propertyKey, const std::string& instance = "");
137 
145  static Json NodeHasChildren(int childrenCount, const std::string& instance = "");
146 
154  static Json NoData(const std::string& nodeUid, const std::string& instance = "");
155 
163  static Json NoGeometry(const std::string& nodeUid, const std::string& instance = "");
164 
172  static Json RenderingError(const std::string& detail, const std::string& instance = "");
173 
180  static Json CircularHierarchyReference(const std::string& instance = "");
181 
189  static Json UnsupportedFormat(const std::string& detail, const std::string& instance = "");
190 
198  static Json SerializationError(const std::string& detail, const std::string& instance = "");
199 
207  static Json FileNotFound(const std::string& filePath, const std::string& instance = "");
208 
217  static Json FileReadError(const std::string& filePath, const std::string& detail, const std::string& instance = "");
218 
228  const std::string& requestedMode,
229  const std::vector<std::string>& availableModes,
230  const std::string& instance = "");
231 
241  static Json AccessDenied(const std::string& detail, const std::string& instance = "");
242 
252  static Json Unauthorized(const std::string& detail, const std::string& instance = "");
253 
261  static Json RateLimitExceeded(int retryAfterSeconds, const std::string& instance = "");
262 
272  static Json FileAccessDenied(const std::string& detail, const std::string& instance = "");
273 
283  static Json RenderWindowNotAvailable(const std::string& instance = "");
284 
293  static Json TimeNavigationNotAvailable(const std::string& instance = "");
294 
303  static Json TimeStepperNotAvailable(const std::string& instance = "");
304 
318  static Json EditorNotActive(const std::string& detail, const std::string& instance = "");
319 
330  static Json RenderWindowNotFound(const std::string& windowId, const std::string& instance = "");
331 
342  static Json UnsupportedOperation(const std::string& detail, const std::string& instance = "");
343 
354  static Json RendererUnavailable(const std::string& windowId, const std::string& instance = "");
355  };
356 }
357 
358 #endif
#define MITKRESTAPI_EXPORT
Helper class for generating RFC 9457 compliant error responses.
static Json FileReadError(const std::string &filePath, const std::string &detail, const std::string &instance="")
Create a "File read error" error response.
static Json InvalidRequest(const std::string &detail, const std::string &instance="")
Create an "Invalid request" error response.
static Json TimeNavigationNotAvailable(const std::string &instance="")
Create a "Time navigation not available" error response.
static Json DataStorageNotAvailable(const std::string &instance="")
Create a "DataStorage not available" error response.
static Json RateLimitExceeded(int retryAfterSeconds, const std::string &instance="")
Create a "Rate limit exceeded" error response.
static Json AccessDenied(const std::string &detail, const std::string &instance="")
Create an "Access denied" error response.
static Json RenderWindowNotAvailable(const std::string &instance="")
Create a "Render window not available" error response.
static Json CircularHierarchyReference(const std::string &instance="")
Create a "Circular hierarchy reference" error response.
static Json NoGeometry(const std::string &nodeUid, const std::string &instance="")
Create a "No geometry" error response.
static Json RendererUnavailable(const std::string &windowId, const std::string &instance="")
Create a "Renderer unavailable" error response.
static Json NodeHasChildren(int childrenCount, const std::string &instance="")
Create a "Node has children" error response.
static Json RenderWindowNotFound(const std::string &windowId, const std::string &instance="")
Create a "Render window not found" error response.
static Json TimeStepperNotAvailable(const std::string &instance="")
Create a "Time stepper not available" error response.
static Json Create(const std::string &code, const std::string &title, const std::string &detail, int status, const std::string &instance="")
Create an RFC 9457 error response.
static Json UnsupportedFormat(const std::string &detail, const std::string &instance="")
Create an "Unsupported format" error response.
static Json TransferModeNotAvailable(const std::string &requestedMode, const std::vector< std::string > &availableModes, const std::string &instance="")
Create a "Transfer mode not available" error response.
static Json RenderingError(const std::string &detail, const std::string &instance="")
Create a "Rendering error" error response.
static Json SerializationError(const std::string &detail, const std::string &instance="")
Create a "Serialization error" error response.
static Json FileAccessDenied(const std::string &detail, const std::string &instance="")
Create a "File access denied" error response.
static Json FileNotFound(const std::string &filePath, const std::string &instance="")
Create a "File not found" error response.
static Json PropertyNotFound(const std::string &propertyKey, const std::string &nodeUid, const std::string &instance="")
Create a "Property not found" error response.
static Json InternalError(const std::string &detail, const std::string &instance="")
Create an "Internal error" response.
static Json EditorNotActive(const std::string &detail, const std::string &instance="")
Create an "Editor not active" error response.
static Json NodeNotFound(const std::string &uid, const std::string &instance="")
Create a "Node not found" error response.
static Json PropertyProtected(const std::string &propertyKey, const std::string &instance="")
Create a "Property protected" error response.
static Json NoData(const std::string &nodeUid, const std::string &instance="")
Create a "No data" error response.
static Json UnsupportedOperation(const std::string &detail, const std::string &instance="")
Create an "Unsupported operation" error response.
static Json Unauthorized(const std::string &detail, const std::string &instance="")
Create an "Unauthorized" error response.
nlohmann::json json
Find image slices visible on a given plane.