Error response structure

Errors from the REST API are returned in a JSON structure or an XML structure.

Error messages have the following XML structure.

<error>
       <code>error_code</code>
       <message>error_message</message>
       <causemessage>error_message</causemessage>
       <stacktrace>stacktrace</stacktrace>
       <diagnosticMessages>
            <diagnosticMessage>error_message1</diagnosticMessage>
            <diagnosticMessage>error_message2</diagnosticMessage>
            <diagnosticMessage>error_messageN</diagnosticMessage>
       </diagnosticMessages>
       <inserts>
						<insert>insert1</insert>
						<insert>insert2</insert>
						<insert>insertN</insert>  
       </inserts>
</error>    

Error messages have the following JSON structure.

{
    "error": {
        "diagnosticMessages": [{
            "diagnosticMessage": "error_message1"
        },
        {
            "diagnosticMessage": "error_message2"
        },
        {
            "diagnosticMessage": "error_messageN"
        }],
        "message": "message",
        "stacktrace": "stacktrace",
        "code": "error_code",
        "causemessage": "message"
    }
}

The following example shows an XML error message:

<error>
       <code>GSR1350E</code> 
       <message>GSR1427E: The Governance Policy Validator has encountered one problem.</message>
       <causemessage>GSR1427E: The Governance Policy Validator has encountered one problem.</causemessage>
       <stacktrace>com.ibm.serviceregistry.ServiceRegistryValidationException: GSR1427E: The Governance Policy Validator has encountered one problem.
       ERROR GSR1427E: The Governance Policy Validator has encountered one problem.
       ERROR GSR1420E: RelationshipAssertion: The Capability must have a Charter associated in order to perform the &quot;Propose Charter&quot; transition. . There are not enough target objects on this relationship. The minimum is 1 ‪[Assertion name: CapabilityLifecycleDetailRights.CapabilityCharterAvailableCheck]‬
       com.ibm.sr.policy.manager.PolicyManager.validatePolicies(PolicyManager.java:738)
       com.ibm.sr.policy.manager.PolicyManager.validatePolicies(PolicyManager.java:688)
       com.ibm.sr.governance.validator.GovernancePolicyValidator.transition(GovernancePolicyValidator.java:158)
       com.ibm.sr.api.ServiceRegistryValidatorImpl.invokeValidators(ServiceRegistryValidatorImpl.java:302)
       com.ibm.sr.api.ServiceRegistryValidatorImpl.transition(ServiceRegistryValidatorImpl.java:206)
       com.ibm.sr.governance.api.ServiceRegistryGovernanceImpl.invokeValidation(ServiceRegistryGovernanceImpl.java:1194)
       com.ibm.sr.governance.api.ServiceRegistryGovernanceImpl.transition(ServiceRegistryGovernanceImpl.java:621)
       com.ibm.serviceregistry.governance.ServiceRegistryGovernanceBean.transition(ServiceRegistryGovernanceBean.java:413)
       com.ibm.serviceregistry.governance.EJSLocalStatelessServiceRegistryGovernance_602675c1.transition(EJSLocalStatelessServiceRegistryGovernance_602675c1.java:610)
       com.ibm.sr.data.servlet.MetadataHandler.doPutWithContent(MetadataHandler.java:1031)
       com.ibm.sr.data.servlet.MetadataHandler.doPut(MetadataHandler.java:862)
       com.ibm.sr.data.servlet.Content.doPut(Content.java:400)
       javax.servlet.http.HttpServlet.service(HttpServlet.java:598)
       javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
       com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1214)
       com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:774)
       com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:456)
       com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
       com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:125)
       com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:92)
       com.ibm.sr.api.StreamingCompressedResponseServletFilter.doFilter(StreamingCompressedResponseServletFilter.java:173)
       com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:192)
       com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:89)
       com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:926)
       com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1023)
       com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3703)
       com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
       com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:962)
       com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
       com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195)
       com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
       com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
       com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
       com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:276)
       com.ibm.ws.ssl.channel.impl.SSLConnectionLink.determineNextChannel(SSLConnectionLink.java:1049)
       com.ibm.ws.ssl.channel.impl.SSLConnectionLink.readyInboundPostHandshake(SSLConnectionLink.java:717)
       com.ibm.ws.ssl.channel.impl.SSLConnectionLink.readyInbound(SSLConnectionLink.java:571)
       com.ibm.ws.ssl.channel.impl.SSLConnectionLink.ready(SSLConnectionLink.java:295)
       com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
       com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
       com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
       com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
       com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
       com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
       com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
       com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
       com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
       com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1659)</stacktrace>
       <diagnosticMessages>    
              <diagnosticMessage>ERROR GSR1427E: The Governance Policy Validator has encountered one problem.</diagnosticMessage>
              <diagnosticMessage>ERROR GSR1420E: RelationshipAssertion: The Capability must have a Charter associated in order to perform the "Propose Charter" transition. . There are not enough target objects on this relationship. The minimum is 1 ‪[Assertion name: CapabilityLifecycleDetailRights.CapabilityCharterAvailableCheck]‬</diagnosticMessage>
       </diagnosticMessages>
       <inserts>
              <insert>The Capability must have a Charter associated in order to perform the "Propose Charter" transition.</insert> 
       </inserts>  
<error>