Open Source API Gateway

Membrane API Gateway Error Reference

Membrane API Gateway reports errors as Problem Details (RFC 9457). In development mode, the error response contains a see field that links to one of the pages below. Each page explains what the error means, what usually causes it and how to fix it.

How to Read an Error Response

{
"type": "https://membrane-api.io/problems/user",
"title": "Invalid path or method",
"status": 404,
"detail": "The requested path or HTTP method is not supported.",
"see": "https://membrane-api.io/problems/user/routing"
}
{
  "type": "https://membrane-api.io/problems/user",
  "title": "Invalid path or method",
  "status": 404,
  "detail": "The requested path or HTTP method is not supported.",
  "see": "https://membrane-api.io/problems/user/routing"
}

The type names the category of the error: user, security, gateway, internal or operation-error. The see link points to the page for that specific error. In production mode, see and most details are left out of the response.

User Errors

The request or the gateway configuration caused the problem. These errors usually have a 4xx status.

ErrorPath
400 Could Not Create Thumbprintuser/acme-http-challenge
GraphQL Protection Violationuser/graphql-protection
400 Could Not Generate XML From HTTPuser/http-2-xml
400 Malformed Request Path or Hostuser/http-client/malformed-url
400 Invalid Request Framinguser/http-server-handler/invalid-framing
409 Idempotency Key Already Processeduser/idempotency
400 Invalid Character in Request Pathuser/invalid-path
400 JSON Protection Violationuser/json-protection
404 No Matching API Founduser/openapi/not-found
404 OpenAPI Document Not Founduser/openapi/openapi-publisher/wrong-id
400 Error During OpenAPI Request Validationuser/openapi/request/generic
500 Error During OpenAPI Response Validationuser/openapi/response/generic
400 Path Does Not Follow the URI Specificationuser/path/url-rewriter
429 Concurrent Connection Limit Reacheduser/rate-limit/http-endpoint-listener
429 Rate Limit Is Exceededuser/rate-limit/rate-limiter
400 REST to SOAP Conversion Faileduser/rest-2-soap-gateway
404 Invalid Path or Methoduser/routing
400 SOAP to REST Transformation Faileduser/soap-2-rest-gateway
400 Error in STOMP Clientuser/stomp-client
400 JSON Validation Faileduser/validation/json-schema-validator
400 OpenAPI Request Validation Faileduser/validation/openapi/request
500 OpenAPI Response Validation Faileduser/validation/openapi/response
400 XML Validation Faileduser/validation/xml-schema-validator
400 Not a SOAP Messageuser/ws-security
400 and 405 Errors of wsdl2openapiuser/wsdl2openapi
415 and 400 Request Discarded by xmlProtectionuser/xml-protection
400 XSLT Transformation Errorsuser/xslt-transformer

Security Errors

A security plugin rejected the request, for example because of missing credentials, an invalid token or a CORS policy.

ErrorPath
403 Access Deniedsecurity/access-control/authorization-denied
401/403 API Key Rejectedsecurity/authorization-denied/api-key
401 Basic Authentication Failedsecurity/basic-authenticator
403 CORS Credentials Not Allowedsecurity/credentials-not-allowed/cors
403 CORS Headers Not Allowedsecurity/headers-not-allowed/cors
401 JWT Rejectedsecurity/jwt-auth
401 JWT Header Not JSONsecurity/jwt-auth/jwt-header-not-json
401 JWT Validation Failedsecurity/jwt-auth/jwt-validation-failed
401 Error Retrieving JWTsecurity/jwt-auth/retrieving-jwt
500 JWT Signing Failedsecurity/jwt-sign/crypto
500 Message Is Too Largesecurity/limit-interceptor
403 CORS Method Not Allowedsecurity/method-not-allowed/cors
500 OAuth2 Error from Authentication Serversecurity/oauth2-callback-request-handler/oauth2-error-from-authentication-server
403 CORS Origin Not Allowedsecurity/origin-not-allowed/cors
400/502 SQL Injection Blockedsecurity/sql-injection-protection
400 XML Security Policy Violatedsecurity/xml-protection

Gateway Errors

Membrane could not reach the backend or received an invalid response from it.

ErrorPath
502 Could Not Connect to Backendgateway/http-client/connect
401 Protocol Upgrade Deniedgateway/http-client/denied-protocol-upgrade
502 Invalid Response Framinggateway/http-client/invalid-framing
502 Unknown Backend Hostgateway/http-client/unknown-host
502 Could Not Obtain OAuth2 Tokengateway/oauth2-client/oauth2-token
502 Upstream Proxy Rejected CONNECTgateway/proxy/connect

Internal Errors

A failure inside the gateway, in a plugin, a script or the processing of a message.

ErrorPath
500 Error Dispatching Request in Admin Consoleinternal/admin-rest
500 Error Creating OpenAPI Publisherinternal/api-docs/publisher-creation
500 Error Generating OpenAPI Overviewinternal/api-docs/publisher-handling
500 Could Not Create APIs JSONinternal/apis-json
500 OAuth2 Authorization Endpoint Errorinternal/auth-endpoint-processor
503 No Backend Node Availableinternal/balancer/node-dispatching
500 Could Not Get Session Idinternal/balancer/sessionid-extraction
500 Error Performing Calloutinternal/call
500 Error Processing Call Responseinternal/call/internal-calling
500 Choose Expression Evaluation Failedinternal/choose/expression-evaluation
500 Virus Scanner Errorinternal/clam-av
500 OAuth2 Default Endpoint Failureinternal/defaultendpointprocessor
500 Could Not Get Forwarding Destinationinternal/dispatching-interceptor
500 Error in Admin Console Requestinternal/dynamic-admin-page
500 Could Not Create Echointernal/echo
500 OAuth2 Consent or Flow Start Failedinternal/empty-endpoint-processor
500 Error Initiating OAuth2 Flowinternal/flow-initiator
500 For Expression Failedinternal/for
500 Could Not Parse Query Parametersinternal/form-validation
500 Error Serializing Map to JSON in groovyinternal/groovy/json-processing-1
500 Error Sending Request to Backendinternal/http-client
504 Connection to Backend Timed Outinternal/http-client/connect-timeout
502 Backend Closed the Connectioninternal/http-client/socket-closed
502 Error Communicating with Targetinternal/http-client/socket-exception
504 Backend Did Not Respond in Timeinternal/http-client/socket-timeout
500 Error During Request Processinginternal/http-handler/error-during-request-phase
500 No Response Was Generatedinternal/http-handler/no-response-produced
500 HTTP/2 Request Without Responseinternal/http2-exchange-handler
500 If Condition Failedinternal/if
500 Internal Routing Failedinternal/internal-routing/request
500 Internal Route Response Failedinternal/internal-routing/response
500 JavaScript Script Errorinternal/javascript
500 Error Serializing Map to JSON in javascriptinternal/javascript/json-processing-1
500 Error Serializing JavaScript Object to JSONinternal/javascript/json-processing-2
500 Error Validating Message (JSON Schema)internal/json-schema-validator/generic
500 Kubernetes Admission Webhook Errorinternal/kubernetes-validation
500 OAuth2 Login Dialog Failedinternal/login-dialog-endpoint-processor
500 Could Not Handle Login Requestinternal/login
500 NTLM Authentication Failedinternal/ntlm-authentication
500 Error Handling Request in oauth2Resource2internal/oauth2-resource/request
500 Error Handling Response in oauth2Resource2internal/oauth2-resource/response
500 Token Validation Endpoint Failedinternal/oauth2-token-validator
500 Error Handling OpenAPI Overviewinternal/openapi-publisher
500 Could Not Parse OpenAPI (Request)internal/openapi/request/openapi-parsing
500 OpenAPI Parsing Error in Response Validationinternal/openapi/response/openapi-parsing
500 Could Not Connect to Databaseinternal/provides-caller-statistics-as-json
500 Cannot Evaluate Rate Limit Keyinternal/rate-limit/rate-limiter
500 Could Not Replace Bodyinternal/regex-replacer
500 Could Not Create Responseinternal/return
500 Could Not Parse Target URLinternal/reverse-proxy
500 OAuth2 Token Revocation Failedinternal/revocation-endpoint-processor
500 Could Not Process SOAP Requestinternal/sample-soap-service
500 Error Validating Message (Schematron)internal/schematron-validator/generic
500 Groovy Script Errorinternal/scripting/groovy/script-execution
500 Error Evaluating setBody Expressioninternal/setbody
500 setHeader Expression Errorinternal/setheader
500 setProperty Expression Errorinternal/setproperty
500 Error Inspecting Message for SQL Injectioninternal/sql-injection-protection
500 Template Expression Failedinternal/template/execution
500 Groovy Error in XML Templateinternal/template/groovy
500 Template Rendering Failedinternal/template/rendering
500 OAuth2 Token Endpoint Errorinternal/tokenendpointprocessor
500 OAuth2 Userinfo Endpoint Errorinternal/user-info-endpoint-processor
500 Error Parsing JSON in json2Xmlinternal/validation/json/json-2-xml
500 Could Not Resolve Fileinternal/web-server
500 Error Serving Documentinternal/web-server/request
500 Could Not Create URIinternal/web-server/uri-creation
500 Error Dispatching Request in Web Service Explorerinternal/web-service-explorer
500 Could Not Apply WS-Securityinternal/ws-security
500 Could Not Rewrite Endpointinternal/wsa-endpoint-rewriter
500 Could Not Return WSDL Documentinternal/wsdl-publisher
500 Error Rewriting URI in WSDLinternal/wsdl-rewriting
500 Error Validating Message (WSDL)internal/wsdl-validator/generic
500 WSDL to OpenAPI Conversion Errorinternal/wsdl2openapi
400 Could Not Transform XML to JSONinternal/xml-2-json/request
500 Could Not Transform XML to JSONinternal/xml-2-json/response
500 XML Error in xmlContentFilterinternal/xml-content-filter
500 Error Inspecting Body in xmlProtectioninternal/xml-protection
500 Error Validating Message (XML Schema)internal/xml-schema-validator/generic
500 XSLT Transformation Failedinternal/xslt-transformer

Operation Errors

The backend reported a failed operation, for example a SOAP fault.

ErrorPath
500 Operation Failed in wsdl2openapioperation-error/wsdl2openapi

Plugin-Specific Errors

Some errors can occur in any plugin. Their path ends in or contains the name of the plugin that raised the error. Plugins that have a page of their own for the same path are listed in the tables above.

Exception in a Plugin

A plugin threw an exception that it did not turn into an error response itself.

Show all plugins

Request Body Could Not Be Read

A plugin could not read the request body, because it was incomplete or broken.

Show all plugins

Request Body Could Not Be Decoded

A plugin could not decode a gzip, deflate or br request body.

Show all plugins

Message Body Could Not Be Read

A plugin could not read a message body, usually the response of the backend.

Show all plugins

Still stuck? See the troubleshooting guide or ask on GitHub Issues. For commercial support, contact info@predic8.de.