- Created by Sajesh Kayyath, last modified on May 22, 2023
You are viewing an old version of this page. View the current version.
Compare with Current Restore this Version View Page History
« Previous Version 17 Next »
This document explains about the various error responses the inQuiry micro service currently throws. The intent of this document is to look through the errors and classify it and propose any changes in terms of error reporting.
Broadly classified, there are three types of error responses that are coming out of the APIs.
Error Classification | HTTP Status Code | Description / Usage |
---|---|---|
CLIENT_ERROR | 400 | The client sends a bad request that resulted in service validating and throwing the error. |
RESOURCE_NOT_FOUND | 404 | The client request for a resource that is not found in the server. |
SERVER_ERROR | 500 | Service resulted in unexpected results while processing the client request. |
Reference : org.sunbird.common.exception.ResponseCode
Sunbird Exception Hierarchy
Current Scenarios of various exceptions
Error Code | Error Message | Thrown by? |
---|---|---|
ERR_API_CALL | Something Went Wrong While Making API Call | Error is: ?? | Knowlg Core |
ERR_QUESTION_CREATE | Visibility cannot be Parent! | inQuiry |
ERR_QUESTION_SET_CREATE | Visibility cannot be Parent! | inQuiry |
ERR_ACCESS_DENIED | ?? visibility is private, hence access denied | inQuiry |
ERR_INVALID_CHANNEL | Please Provide Channel! | inQuiry |
ERR_ACCESS_DENIED | Channel id is not matched | inQuiry |
ERR_QUESTION_UPDATE | ?? with visibility Parent, can't be updated individually. | inQuiry |
ERR_QUESTION_SET_UPDATE | ?? with visibility Parent, can't be updated individually. | inQuiry |
ERR_QUESTION_SET_REVIEW | ?? with visibility Parent, can't be sent for review individually. | inQuiry |
ERR_QUESTION_SET_REVIEW | ?? with status other than Draft can't be sent for review. | inQuiry |
Draft
ERROR_RESTRICTED_PROP", "Properties in list " + restrictedProps.mkString("[", ", ", "] + " are not allowed in request ErrorCodes.ERR_BAD_REQUEST.name(), s"Request Body cannot be Empty. ErrorCodes.ERR_BAD_REQUEST.name(), s"Cannot update content status to ErrorCodes.ERR_BAD_REQUEST.name(), "Required field identifier is missing or empty. ErrorCodes.ERR_BAD_REQUEST.name(), "Request contains more than the permissible limit of identifiers AssessmentConstants.ERR_INVALID_OBJECT_TYPE, s"Please Provide Valid ${requestObjectType} Identifier AssessmentConstants.ERR_INVALID_REQUEST, "Question With Visibility Parent Cannot Be Copied Individually! AssessmentConstants.ERR_INVALID_REQUEST, "Please provide valid value for " + keysNotPresent) AssessmentConstants.ERR_INVALID_REQUEST, "QuestionSet With Status " + node.getMetadata.get(AssessmentConstants.STATUS).asInstanceOf[String].toLowerCase + " Cannot Be Partially (Shallow) Copied. errCode, "Visibility cannot be Parent! ERR_ACCESS_DENIED", s"$resName visibility is private, hence access denied ERR_INVALID_CHANNEL", "Please Provide Channel! ERR_ACCESS_DENIED", "Channel id is not matched errCode, node.getMetadata.getOrDefault("objectType", ".asInstanceOf[String].replace("Image", " + " with visibility Parent, can't be updated individually. errCode, s"${node.getObjectType.replace("Image", "} with visibility Parent, can't be sent for review individually. errCode, s"${node.getObjectType.replace("Image", "} with status other than Draft can't be sent for review. errCode, s"${node.getObjectType.replace("Image", "} with visibility Parent, can't be sent for review individually. errCode, s"${node.getObjectType.replace("Image", "} with status other than Draft can't be sent for review. ERR_MANDATORY_FIELD_VALIDATION", s"Mandatory Fields ${messages.asJava} Missing for ${node.getIdentifier.replace(".img", "} errCode, s"${node.getObjectType.replace("Image", "} with visibility Parent, can't be sent for publish individually. errCode, s"${node.getObjectType.replace("Image", "} having Processing status can't be sent for publish. errCode, s"${node.getObjectType.replace("Image", "} with visibility Parent, can't be sent for publish individually. errCode, s"${node.getObjectType.replace("Image", "} having Processing status can't be sent for publish. ERR_MANDATORY_FIELD_VALIDATION", s"Mandatory Fields ${messages.asJava} Missing for ${node.getIdentifier.replace(".img", "} errCode, s"${node.getObjectType.replace("Image", "} with identifier errCode, s"${node.getObjectType.replace("Image", "} with visibility Parent, can't be sent for reject individually. errCode, s"${node.getObjectType.replace("Image", "} is not in 'Review' state for identifier ERR_QUESTION_SET_ADD", "Node with Identifier " + node.getIdentifier + " is not a Question Set ERR_QUESTION_SET", "Object with identifier ERR_MANDATORY_FIELD_VALIDATION", s"Mandatory Fields ${messages.asJava} Missing for ${content.get("identifier.toString} BE_JOB_REQUEST_EXCEPTION", "Event is not generated properly. ERR_BRANCHING_LOGIC", s"Branching Is Not Enabled For ${rootNode.getIdentifier}. Please Enable Branching Or Remove branchingLogic from Request. ErrorCodes.ERR_BAD_REQUEST.name(), "rootId is mandatory ErrorCodes.ERR_BAD_REQUEST.name(), "children are mandatory ErrorCodes.ERR_BAD_REQUEST.name(), "Branch Rule Found For The Node Which Is Not A Children Having Identifier ErrorCodes.ERR_BAD_REQUEST.name(), "Children which are not available are ErrorCodes.ERR_BAD_REQUEST.name(), s"Children must be of types $ASSESSMENT_OBJECT_TYPES for ids ERR_BRANCHING_LOGIC", s"Branching Is Not Enabled For ${unitId}. Please Enable Branching Or Remove branchingLogic from Request. ERR_BRANCHING_LOGIC", s"Dependent Children Found! Please Remove Children With Identifiers ${target} For Node ERR_BRANCHING_LOGIC", s"Source With Identifiers ${sourceIds.diff(childrenIds).asJava} Not Found! Please Provide Valid Source Identifier. ERR_BRANCHING_LOGIC", "An Object Can't Depend On More Than 1 Object ERR_BRANCHING_LOGIC", s"${source.get(0)} Is Already Children Of ${pSource.get(0)}. So It Can't Be Parent For ${entry._1} ErrorCodes.ERR_BAD_REQUEST.name(), "Hierarchy data is empty ERR_QS_UPDATE_HIERARCHY", "Question cannot have children in hierarchy HierarchyErrorCodes.ERR_INVALID_ROOT_ID, "Please Provide Valid Root Node Identifier HierarchyErrorCodes.ERR_INVALID_ROOT_ID, "Invalid MimeType for Root Node Identifier HierarchyErrorCodes.ERR_INVALID_ROOT_ID, "Invalid Visibility found for Root Node Identifier ERR_UPDATE_QS_HIERARCHY", s"Object Type is mandatory for creation of node with id ERR_UPDATE_QS_HIERARCHY", s"Visibility can be only of type Parent for identifier ERR_UPDATE_QS_HIERARCHY", s"Visibility can be only of type ${HierarchyConstants.QUESTION_VISIBILITY.asJava} for identifier ERR_BRANCHING_LOGIC", s"Branching Is Not Enabled For ERR_BRANCHING_LOGIC", s"Please Provide Branching Rules for ERR_BRANCHING_LOGIC", s"Please Provide Dependent Object Within Same Parent having identifier ERR_BRANCHING_LOGIC", "An Object Can't Depend On More Than 1 Object ERR_BRANCHING_LOGIC", "A Dependent Object Can't Have Further Dependent Object
Error Code | Error Message |
---|---|
|
|
|
|
Error Code | Error Message |
---|---|
ERR_QUESTION_SET_HIERARCHY | No hierarchy is present in cassandra for identifier: ?? |
ERR_QUESTIONSET_COPY | Something Went Wrong, Please Try Again |
ERR_WHILE_FETCHING_HIERARCHY_FROM_CASSANDRA | Error while fetching hierarchy from cassandra |
SERVER_ERROR | Invalid response from search |
ERR_HIERARCHY_NOT_FOUND | No hierarchy is present in cassandra for identifier: ?? |
ERR_SYSTEM_EXCEPTION | Exception Occurred While Saving The Record. Exception is : ?? |
ERR_SYSTEM_EXCEPTION | Exception Occurred While Reading The Record. Exception is : ?? |
ERR_GRAPH_PROCESSING_ERROR | Unable To Fetch Nodes From Graph. Exception is: ?? |
ERR_INVALID_REQUEST_BODY | Request Body is Missing! |
ERR_API_CALL | Something Went Wrong While Making API Call | Error is: ?? |
ERR_INVALID_URL | Url Parameter is Missing! |
ERR_INVALID_HEADER_PARAM | Header Parameter is Missing! |
ERR_DATA_PARSER | Unable to parse data! | Error is: ?? |
ERR_KEYSPACE_NOT_DEFINED | Key space for ?? is not configured. |
API Error Responses from inQuiry microservice
API Functionality | HTTP Error Code | Existing Error Response | Proposed Error Response |
---|---|---|---|
Question Create | 400 Bad Request | { "id": "api.question.create", "ver": "3.0", "ts": "2023-05-14T14:27:33ZZ", "params": { "resmsgid": "c34e2d4f-779b-49fc-9d6a-db4466c8de3a", "msgid": null, "err": "CLIENT_ERROR", "status": "failed", "errmsg": "Validation Errors" }, "responseCode": "CLIENT_ERROR", "result": { "messages": [ "Required Metadata name not set" ] } } | { "id": "api.question.create", "ver": "3.0", "ts": "2023-05-14T14:27:33ZZ", "params": { "resmsgid": "c34e2d4f-779b-49fc-9d6a-db4466c8de3a", "msgid": null, "err": "CLIENT_ERROR", "status": "failed", "errmsg": "Validation Errors" }, "responseCode": "CLIENT_ERROR", "result": { "errors": [ { "identifier": "name", "message": "Required Metadata name not set" } ] } } |
Question Create | 400 Bad Request | { "id": "api.question.create", "ver": "3.0", "ts": "2023-05-14T14:26:17ZZ", "params": { "resmsgid": "e45e51ca-8c4e-4585-ab03-75ab8b131bb5", "msgid": null, "err": "CLIENT_ERROR", "status": "failed", "errmsg": "Validation Errors" }, "responseCode": "CLIENT_ERROR", "result": { "messages": [ "Required Metadata code not set" ] } } |
|
Question Create | 400 Bad Request | { "id": "api.question.create", "ver": "3.0", "ts": "2023-05-14T14:26:27ZZ", "params": { "resmsgid": "0020dd04-65ad-4e8a-9194-bb927025d3e0", "msgid": null, "err": "CLIENT_ERROR", "status": "failed", "errmsg": "Validation Errors" }, "responseCode": "CLIENT_ERROR", "result": { "messages": [ "Required Metadata mimeType not set" ] } } |
|
Question Create | 400 Bad Request | { "id": "api.question.create", "ver": "3.0", "ts": "2023-05-14T14:51:49ZZ", "params": { "resmsgid": "3814749d-47a0-4e38-a040-6d32e8e4cbcf", "msgid": null, "err": "CLIENT_ERROR", "status": "failed", "errmsg": "Validation Errors" }, "responseCode": "CLIENT_ERROR", "result": { "messages": [ "Required Metadata primaryCategory not set" ] } } |
|
Question Create | 400 Bad Request | { "id": "api.question.create", "ver": "3.0", "ts": "2023-05-14T14:26:35ZZ", "params": { "resmsgid": "4ab85c6e-3ee4-4dc3-bcbf-0292b734dfdc", "msgid": null, "err": "CLIENT_ERROR", "status": "failed", "errmsg": "Validation Errors" }, "responseCode": "CLIENT_ERROR", "result": { "messages": [ "Metadata mimeType should be one of: [application/vnd.sunbird.question]" ] } } | { "id": "api.question.create", "ver": "3.0", "ts": "2023-05-14T14:26:35ZZ", "params": { "resmsgid": "4ab85c6e-3ee4-4dc3-bcbf-0292b734dfdc", "msgid": null, "err": "CLIENT_ERROR", "status": "failed", "errmsg": "Validation Errors" }, "responseCode": "CLIENT_ERROR", "result": { "errors": [ { "identifier": "mimeType", "message": "Metadata mimeType should be one of: [application/vnd.sunbird.question]" } ] } } |
Question Update | 400 Bad Request | { "id": "api.question.update", "ver": "3.0", "ts": "2023-05-14T14:29:03ZZ", "params": { "resmsgid": "d43a4913-d662-4a8a-8859-9add9a04da52", "msgid": null, "err": "CLIENT_ERROR", "status": "failed", "errmsg": "Invalid version Key" }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } | { "id": "api.question.update", "ver": "3.0", "ts": "2023-05-14T14:29:03ZZ", "params": { "resmsgid": "d43a4913-d662-4a8a-8859-9add9a04da52", "msgid": null, "err": "CLIENT_ERROR", "status": "failed", "errmsg": "Invalid version Key" }, "responseCode": "CLIENT_ERROR", "result": { "errors": [ { "identifier": "version key", "message": "Invalid version Key" } ] } } |
Question Review | 400 Bad Request | { "id": "api.question.review", "ver": "3.0", "ts": "2023-05-14T14:30:20ZZ", "params": { "resmsgid": "fd89269b-36f9-4673-8af4-db41b5f60716", "msgid": null, "err": "ERR_MANDATORY_FIELD_VALIDATION", "status": "failed", "errmsg": "Mandatory Fields [body] Missing for do_21379593928588492814142" }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } | { "id": "api.question.review", "ver": "3.0", "ts": "2023-05-14T14:30:20ZZ", "params": { "resmsgid": "fd89269b-36f9-4673-8af4-db41b5f60716", "msgid": null, "err": "ERR_MANDATORY_FIELD_VALIDATION", "status": "failed", "errmsg": "Mandatory Fields [body] Missing for do_21379593928588492814142" }, "responseCode": "CLIENT_ERROR", "result": { "errors": [ { "identifier": "body", "message": "Mandatory Fields [body] Missing for do_21379593928588492814142" } ] } } |
Question Review | 400 Bad Request | { "id": "api.question.review", "ver": "3.0", "ts": "2023-05-14T14:30:24ZZ", "params": { "resmsgid": "851c2874-e6fe-42b0-8c4f-67c234154bc8", "msgid": null, "err": "ERR_MANDATORY_FIELD_VALIDATION", "status": "failed", "errmsg": "Mandatory Fields [responseDeclaration] Missing for do_21379593932446105614143" }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } |
|
Question Review | 400 Bad Request | { "id": "api.question.review", "ver": "3.0", "ts": "2023-05-14T14:30:29ZZ", "params": { "resmsgid": "23ee2a5c-6ad7-4bae-80c2-94d42f82546d", "msgid": null, "err": "ERR_MANDATORY_FIELD_VALIDATION", "status": "failed", "errmsg": "Mandatory Fields [interactions] Missing for do_21379593936168550414144" }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } |
|
Question Review | 400 Bad Request | { "id": "api.question.review", "ver": "3.0", "ts": "2023-05-14T14:30:34ZZ", "params": { "resmsgid": "3de1955f-c480-4903-ba17-05e59cf2dc43", "msgid": null, "err": "ERR_MANDATORY_FIELD_VALIDATION", "status": "failed", "errmsg": "Mandatory Fields [answer] Missing for do_21379593940282572814145" }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } |
|
Question Publish | 400 Bad Request | { "id": "api.question.publish", "ver": "3.0", "ts": "2023-05-14T14:30:56ZZ", "params": { "resmsgid": "3c82e765-b5e0-4fec-8e5e-87d66f60b323", "msgid": null, "err": "ERR_MANDATORY_FIELD_VALIDATION", "status": "failed", "errmsg": "Mandatory Fields [body] Missing for do_21379593958717030414146" }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } |
|
Question Publish | 400 Bad Request | { "id": "api.question.publish", "ver": "3.0", "ts": "2023-05-14T14:31:00ZZ", "params": { "resmsgid": "e54e1b92-98a8-46bb-a27c-f9790dffd713", "msgid": null, "err": "ERR_MANDATORY_FIELD_VALIDATION", "status": "failed", "errmsg": "Mandatory Fields [responseDeclaration] Missing for do_21379593961955328014147" }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } |
|
Question Publish | 400 Bad Request | { "id": "api.question.publish", "ver": "3.0", "ts": "2023-05-14T14:31:04ZZ", "params": { "resmsgid": "80ab8746-8455-4d62-9bf9-886bd38851d8", "msgid": null, "err": "ERR_MANDATORY_FIELD_VALIDATION", "status": "failed", "errmsg": "Mandatory Fields [interactions] Missing for do_21379593964663603214148" }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } |
|
Question Publish | 400 Bad Request | { "id": "api.question.publish", "ver": "3.0", "ts": "2023-05-14T14:31:07ZZ", "params": { "resmsgid": "7ec01a2a-3e35-46d7-8385-0dcc81780708", "msgid": null, "err": "ERR_MANDATORY_FIELD_VALIDATION", "status": "failed", "errmsg": "Mandatory Fields [answer] Missing for do_21379593967552921614149" }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } |
|
Question List | 400 Bad Request | { "id": "api.questions.list", "ver": "3.0", "ts": "2023-05-14T14:31:29ZZ", "params": { "resmsgid": "f76b3bb2-05f0-428a-b0ee-113609f12b6f", "msgid": null, "err": "ERR_BAD_REQUEST", "status": "failed", "errmsg": "Request contains invalid identifiers : [do_list_abc_123]." }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } |
|
Question List | 400 Bad Request | { "id": "api.questions.list", "ver": "3.0", "ts": "2023-05-14T14:31:34ZZ", "params": { "resmsgid": "9edb0e68-8a15-4219-a92a-902efcc786ee", "msgid": null, "err": "ERR_BAD_REQUEST", "status": "failed", "errmsg": "Request contains invalid identifiers : [do_list_abc_234, do_list_abc_123]." }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } |
|
Question Import | 400 Bad Request | { "id": "api.question.import", "ver": "3.0", "ts": "2023-05-14T14:32:00ZZ", "params": { "resmsgid": "b71e805f-5341-4e56-93ed-9f57fd293864", "msgid": null, "err": "ERR_REQUIRED_PROPS_VALIDATION", "status": "failed", "errmsg": "Validation Failed! Mandatory Properties Are [\"name\",\"code\",\"mimeType\",\"framework\",\"channel\"] | Required Property's Missing For [fb1aef22-88e4-4f91-8055-6086bf338bf1]" }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } |
|
Question Import | 400 Bad Request | { "id": "api.question.import", "ver": "3.0", "ts": "2023-05-14T14:32:09ZZ", "params": { "resmsgid": "6a19eeec-b742-4057-a782-c5c1a6a73695", "msgid": null, "err": "ERR_READ_SOURCE", "status": "failed", "errmsg": "Received Invalid Response While Reading Data From Source. Response Code is : RESOURCE_NOT_FOUND" }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } |
|
Question Reject | 400 Bad Request | { "id": "api.question.reject", "ver": "3.0", "ts": "2023-05-14T14:32:19ZZ", "params": { "resmsgid": "1acd73e6-d400-492e-abf5-5654c3425934", "msgid": null, "err": "ERR_QUESTION_REJECT", "status": "failed", "errmsg": "Question is not in 'Review' state for identifier: do_21379594026542694414151" }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } |
|
QuestionSet Create | 400 Bad Request | { "id": "api.questionset.create", "ver": "3.0", "ts": "2023-05-14T14:32:44ZZ", "params": { "resmsgid": "9ce43dcc-49c6-4b19-9285-1e4019bfbf30", "msgid": null, "err": "CLIENT_ERROR", "status": "failed", "errmsg": "Validation Errors" }, "responseCode": "CLIENT_ERROR", "result": { "messages": [ "Required Metadata name not set" ] } } |
|
QuestionSet Create | 400 Bad Request | { "id": "api.questionset.create", "ver": "3.0", "ts": "2023-05-14T14:32:53ZZ", "params": { "resmsgid": "6ac7f1cc-a41a-4bf4-a5f7-49f16beece82", "msgid": null, "err": "CLIENT_ERROR", "status": "failed", "errmsg": "Validation Errors" }, "responseCode": "CLIENT_ERROR", "result": { "messages": [ "Required Metadata code not set" ] } } |
|
QuestionSet Create | 400 Bad Request | { "id": "api.questionset.create", "ver": "3.0", "ts": "2023-05-14T14:32:56ZZ", "params": { "resmsgid": "6a4dc627-3593-49d5-adcf-d0c0a077cff6", "msgid": null, "err": "CLIENT_ERROR", "status": "failed", "errmsg": "Validation Errors" }, "responseCode": "CLIENT_ERROR", "result": { "messages": [ "Required Metadata mimeType not set" ] } } |
|
QuestionSet Update | 200 OK | ?? |
|
QuestionSet Update Hierarchy | 400 Bad Request | { "id": "api.questionset.hierarchy.update", "ver": "3.0", "ts": "2023-05-14T14:33:44ZZ", "params": { "resmsgid": "948bf8e0-c33c-40ed-8e69-fdecace00b7d", "msgid": null, "err": "ERR_INVALID_ROOT_ID", "status": "failed", "errmsg": "Please Provide Valid Root Node Identifier" }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } |
|
QuestionSet Review | 400 Bad Request | { "id": "api.questionset.review", "ver": "3.0", "ts": "2023-05-14T14:34:05ZZ", "params": { "resmsgid": "f90d747b-be39-4fad-992c-c5e2c8575806", "msgid": null, "err": "ERR_MANDATORY_FIELD_VALIDATION", "status": "failed", "errmsg": "Mandatory Fields [responseDeclaration] Missing for do_21379594112953548814163" }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } |
|
QuestionSet Publish | 400 Bad Request | { "id": "api.questionset.publish", "ver": "3.0", "ts": "2023-05-14T14:34:33ZZ", "params": { "resmsgid": "25552ef2-1af5-4bbb-80cb-d68b8f229b1f", "msgid": null, "err": "ERR_MANDATORY_FIELD_VALIDATION", "status": "failed", "errmsg": "Mandatory Fields [responseDeclaration] Missing for do_21379594136426086414168" }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } |
|
QuestionSet Retire | 400 Bad Request | { "id": "api.questionset.retire", "ver": "3.0", "ts": "2023-05-14T14:35:05ZZ", "params": { "resmsgid": "b2e2a370-dee4-47cb-8fe6-a250cdc70f7c", "msgid": null, "err": "ERR_QUESTION_SET_RETIRE", "status": "failed", "errmsg": "QuestionSet with identifier : do_21379594162091622414177 is already Retired." }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } |
|
QuestionSet Reject | 400 Bad Request | { "id": "api.questionset.reject", "ver": "3.0", "ts": "2023-05-14T14:38:57ZZ", "params": { "resmsgid": "ff2aac33-c257-487a-85a8-b44a013e2f71", "msgid": null, "err": "ERR_QUESTION_SET_REJECT", "status": "failed", "errmsg": "QuestionSet is not in 'Review' state for identifier: do_21379594343893401614182" }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } |
|
QuestionSet Import | 400 Bad Request | { "id": "api.questionset.import", "ver": "3.0", "ts": "2023-05-14T14:39:31ZZ", "params": { "resmsgid": "b8a1999b-5893-4ef5-801d-b7c73813119f", "msgid": null, "err": "ERR_REQUIRED_PROPS_VALIDATION", "status": "failed", "errmsg": "Validation Failed! Mandatory Properties Are [\"name\",\"code\",\"mimeType\",\"framework\",\"channel\"] | Required Property's Missing For [4f85db76-f8c4-41d0-b45c-a8cadba2f618]" }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } |
|
QuestionSet Import | 400 Bad Request | { "id": "api.questionset.import", "ver": "3.0", "ts": "2023-05-14T14:39:36ZZ", "params": { "resmsgid": "45cd3ffc-205e-44cd-8017-40804711aa2a", "msgid": null, "err": "ERR_READ_SOURCE", "status": "failed", "errmsg": "Received Invalid Response While Reading Data From Source. Response Code is : RESOURCE_NOT_FOUND" }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } |
|
QuestionSet Add Children | 400 Bad Request | { "id": "api.questionset.add", "ver": "3.0", "ts": "2023-05-14T14:39:44ZZ", "params": { "resmsgid": "6f0aa0d2-6d4a-4788-8a22-0c68d8bb841a", "msgid": null, "err": "ERR_BAD_REQUEST", "status": "failed", "errmsg": "children are mandatory" }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } |
|
QuestionSet Remove Children | 400 Bad Request | { "id": "api.questionset.remove", "ver": "3.0", "ts": "2023-05-14T14:40:01ZZ", "params": { "resmsgid": "242d2006-4e0e-49d8-8edd-725e68fd6a16", "msgid": null, "err": "ERR_BAD_REQUEST", "status": "failed", "errmsg": "children are mandatory" }, "responseCode": "CLIENT_ERROR", "result": { "messages": null } } |
|
API Functionality | HTTP Error Code | Existing Error Response | Proposed Error Response |
---|---|---|---|
Question Create | 404 Not Found | { "id": "api.question.create", "ver": "3.0", "ts": "2023-05-14T14:26:45ZZ", "params": { "resmsgid": "ae6a0c53-2e1b-40fd-8085-7a6463675a5b", "msgid": null, "err": "404", "status": "failed", "errmsg": "Entry is not found in cassandra for content with identifier: obj-cat:random-category-name_question_all {}" }, "responseCode": "RESOURCE_NOT_FOUND", "result": { "messages": null } } | { "id": "api.question.create", "ver": "3.0", "ts": "2023-05-14T14:26:45ZZ", "params": { "resmsgid": "ae6a0c53-2e1b-40fd-8085-7a6463675a5b", "msgid": null, "err": "404", "status": "failed", "errmsg": "Entry is not found in cassandra for content with identifier: obj-cat:random-category-name_question_all {}" }, "responseCode": "RESOURCE_NOT_FOUND", "result": { "errors": [ { "identifier": "obj-cat:random-category-name_question_all", "message": "Entry is not found in cassandra for content with identifier: obj-cat:random-category-name_question_all {}" } ] } } |
Question Read | 404 Not Found | { "id": "api.question.read", "ver": "3.0", "ts": "2023-05-14T14:28:25ZZ", "params": { "resmsgid": "f8088bfa-ba98-49d0-ac9b-8cdc4d15f173", "msgid": null, "err": "NOT_FOUND", "status": "failed", "errmsg": "Error! Node(s) doesn't Exists. | [Invalid Node Id.]: do_1111111" }, "responseCode": "RESOURCE_NOT_FOUND", "result": { "messages": null } } |
|
Question Update | 404 Not Found | { "id": "api.question.update", "ver": "3.0", "ts": "2023-05-14T14:30:11ZZ", "params": { "resmsgid": "12a442d1-851b-4bd4-b664-878688497a55", "msgid": null, "err": "NOT_FOUND", "status": "failed", "errmsg": "Error! Node(s) doesn't Exists. | [Invalid Node Id.]: do_abc_123" }, "responseCode": "RESOURCE_NOT_FOUND", "result": { "messages": null } } |
|
Question Review | 404 Not Found | { "id": "api.question.review", "ver": "3.0", "ts": "2023-05-14T14:30:41ZZ", "params": { "resmsgid": "6d9184ee-1cb3-4c99-acd8-d05fb764aeca", "msgid": null, "err": "NOT_FOUND", "status": "failed", "errmsg": "Error! Node(s) doesn't Exists. | [Invalid Node Id.]: do_abcq_1234" }, "responseCode": "RESOURCE_NOT_FOUND", "result": { "messages": null } } |
|
Question Publish | 404 Not Found | { "id": "api.question.publish", "ver": "3.0", "ts": "2023-05-14T14:31:12ZZ", "params": { "resmsgid": "486fabc5-9ca9-40c4-8aa9-48c4c493bc52", "msgid": null, "err": "NOT_FOUND", "status": "failed", "errmsg": "Error! Node(s) doesn't Exists. | [Invalid Node Id.]: do_abcq_1234" }, "responseCode": "RESOURCE_NOT_FOUND", "result": { "messages": null } } |
|
Question Reject | 404 Not Found | { "id": "api.question.reject", "ver": "3.0", "ts": "2023-05-14T14:32:24ZZ", "params": { "resmsgid": "49b848a4-17d1-43dd-9fe8-508f224dd6f5", "msgid": null, "err": "NOT_FOUND", "status": "failed", "errmsg": "Error! Node(s) doesn't Exists. | [Invalid Node Id.]: do_abc_reject_1111" }, "responseCode": "RESOURCE_NOT_FOUND", "result": { "messages": null } } |
|
QuestionSet Create | 404 Not Found | { "id": "api.questionset.create", "ver": "3.0", "ts": "2023-05-14T14:33:04ZZ", "params": { "resmsgid": "6b5f76da-2fbd-433b-9660-1d7913be0db6", "msgid": null, "err": "404", "status": "failed", "errmsg": "Entry is not found in cassandra for content with identifier: obj-cat:test-questionset-category_questionset_all {}" }, "responseCode": "RESOURCE_NOT_FOUND", "result": { "messages": null } } |
|
QuestionSet Read | 404 Not Found | { "id": "api.questionset.read", "ver": "3.0", "ts": "2023-05-14T14:33:10ZZ", "params": { "resmsgid": "9322f6f9-da7b-481f-9a67-281403c321f5", "msgid": null, "err": "NOT_FOUND", "status": "failed", "errmsg": "Error! Node(s) doesn't Exists. | [Invalid Node Id.]: questionset_123_invalid" }, "responseCode": "RESOURCE_NOT_FOUND", "result": { "messages": null } } |
|
QuestionSet Update | 404 Not Found | { "id": "api.questionset.update", "ver": "3.0", "ts": "2023-05-14T14:33:27ZZ", "params": { "resmsgid": "0f41b47c-7f8d-46dc-87dd-171ef4d8bfb6", "msgid": null, "err": "NOT_FOUND", "status": "failed", "errmsg": "Error! Node(s) doesn't Exists. | [Invalid Node Id.]: invalid_questionset_id" }, "responseCode": "RESOURCE_NOT_FOUND", "result": { "messages": null } } |
|
QuestionSet Update Hierarchy | 404 Not Found | { "id": "api.questionset.hierarchy.update", "ver": "3.0", "ts": "2023-05-14T14:33:49ZZ", "params": { "resmsgid": "d63ee9b1-1a49-455a-a9a0-accd6bc5a036", "msgid": null, "err": "NOT_FOUND", "status": "failed", "errmsg": "Error! Node(s) doesn't Exists. | [Invalid Node Id.]: do_qs_12345" }, "responseCode": "RESOURCE_NOT_FOUND", "result": { "messages": null } } |
|
QuestionSet Update Hierarchy | 404 Not Found | { "id": "api.questionset.hierarchy.update", "ver": "3.0", "ts": "2023-05-14T14:33:54ZZ", "params": { "resmsgid": "c9fdb65f-a071-41b9-a0eb-0f7a160329ee", "msgid": null, "err": "NOT_FOUND", "status": "failed", "errmsg": "Error! Node(s) doesn't Exists. | [Invalid Node Id.]: do_q_123456" }, "responseCode": "RESOURCE_NOT_FOUND", "result": { "messages": null } } |
|
QuestionSet Review | 404 Not Found | { "id": "api.questionset.review", "ver": "3.0", "ts": "2023-05-14T14:34:25ZZ", "params": { "resmsgid": "8050b405-6c9f-431a-a5ed-2465bd92aa3d", "msgid": null, "err": "NOT_FOUND", "status": "failed", "errmsg": "Error! Node(s) doesn't Exists. | [Invalid Node Id.]: do_qs_12345" }, "responseCode": "RESOURCE_NOT_FOUND", "result": { "messages": null } } |
|
QuestionSet Publish | 404 Not Found | { "id": "api.questionset.publish", "ver": "3.0", "ts": "2023-05-14T14:34:39ZZ", "params": { "resmsgid": "c08b8af9-5b03-47b0-b2be-1a37e840fae0", "msgid": null, "err": "NOT_FOUND", "status": "failed", "errmsg": "Error! Node(s) doesn't Exists. | [Invalid Node Id.]: do_1234_publish" }, "responseCode": "RESOURCE_NOT_FOUND", "result": { "messages": null } } |
|
QuestionSet Read Hierarchy | 404 Not Found | { "id": "api.questionset.hierarchy.get", "ver": "3.0", "ts": "2023-05-14T14:34:47ZZ", "params": { "resmsgid": "d229d131-d787-480a-bbfa-2800d59dcb5a", "msgid": null, "err": "RESOURCE_NOT_FOUND", "status": "failed", "errmsg": "rootId do_21379594147649945614172 does not exist" }, "responseCode": "RESOURCE_NOT_FOUND", "result": {} } |
|
QuestionSet Read Hierarchy | 404 Not Found | { "id": "api.questionset.hierarchy.get", "ver": "3.0", "ts": "2023-05-14T14:34:51ZZ", "params": { "resmsgid": "3dceeaa5-13ad-400a-9470-869017e71239", "msgid": null, "err": "RESOURCE_NOT_FOUND", "status": "failed", "errmsg": "rootId do_qs_123_abc does not exist" }, "responseCode": "RESOURCE_NOT_FOUND", "result": {} } |
|
QuestionSet Retire | 404 Not Found | { "id": "api.questionset.retire", "ver": "3.0", "ts": "2023-05-14T14:35:17ZZ", "params": { "resmsgid": "995b39d1-87fc-439e-992a-397175f77fb9", "msgid": null, "err": "NOT_FOUND", "status": "failed", "errmsg": "Error! Node(s) doesn't Exists. | [Invalid Node Id.]: do_qs_1234" }, "responseCode": "RESOURCE_NOT_FOUND", "result": { "messages": null } } |
|
QuestionSet Reject | 404 Not Found | { "id": "api.questionset.reject", "ver": "3.0", "ts": "2023-05-14T14:39:23ZZ", "params": { "resmsgid": "acd9ed0b-3aec-481c-ac52-3476b805f099", "msgid": null, "err": "NOT_FOUND", "status": "failed", "errmsg": "Error! Node(s) doesn't Exists. | [Invalid Node Id.]: do_qs_123445" }, "responseCode": "RESOURCE_NOT_FOUND", "result": { "messages": null } } |
|
QuestionSet Add Children | 404 Not Found | { "id": "api.questionset.add", "ver": "3.0", "ts": "2023-05-14T14:39:53ZZ", "params": { "resmsgid": "673887df-8c4d-4b84-90d5-874f3868d5ce", "msgid": null, "err": "NOT_FOUND", "status": "failed", "errmsg": "Error! Node(s) doesn't Exists. | [Invalid Node Id.]: do_qs_12333333" }, "responseCode": "RESOURCE_NOT_FOUND", "result": { "messages": null } } |
|
QuestionSet Remove Children | 404 Not Found | { "id": "api.questionset.remove", "ver": "3.0", "ts": "2023-05-14T14:40:07ZZ", "params": { "resmsgid": "015b90c2-bb4c-4a24-a270-dba2acf21538", "msgid": null, "err": "NOT_FOUND", "status": "failed", "errmsg": "Error! Node(s) doesn't Exists. | [Invalid Node Id.]: do_qs_1111223333" }, "responseCode": "RESOURCE_NOT_FOUND", "result": { "messages": null } } |
|
Proposed Error Response
Solution 1
Recommendation is to use the error standards as specified in the http://jsonapi.org
code
: an application-specific error code, expressed as a string value.
title
: a short, human-readable summary of the problem that SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization.
detail
: a human-readable explanation specific to this occurrence of the problem. Like title
, this field’s value can be localized.
source
: an object containing references to the primary source of the error. It SHOULD include one of the following members or be omitted:
pointer
: a JSON Pointer to the value in the request document that caused the error
parameter
: a string indicating which URI query parameter caused the error.
header :
a string indicating the name of a single request header which caused the error.
{ "errors": [ { "code": "1000", "source": { "pointer": "/name" }, "title": "Name not set", "detail": "Required Metadata name not set." }, { "code": "1001", "source": { "pointer": "/code" }, "title": "Code not set.", "detail": "Required Metadata code not set." }, { "code": "1002", "source": { "pointer": "/mimeType" }, "title": "Required Metadata mimeType not set." } ] }
We can reserve error codes for the parent category of errors, something like outlined below,
CLIENT_ERROR - 10000 to 20000
RESOURCE_NOT_FOUND - 20001 to 30000
SERVER_ERROR - 30001 to 40000
Solution 2
Preparing a key / value of the field with the error and corresponding message.
{ "errors": { "name" : "Required Metadata name not set.", "code" : "Required Metadata code not set.", "mimeType" : "Required Metadata mimeType not set." } }
One limitation with this approach is if there are multiple errors to be returned on the same field, then it becomes difficult.
- No labels
- Edit Labels
0 Comments