Edge Microgateway error reference

This topic describes errors and warnings you may encounter with Edge Microgateway.

General application errors

  • HTTP 500, failed in error handler - Most errors will have this number, as will some errors returned from targets. In particular, errors-middleware.js is used throughout the microgateway-core module. When it is used, it writes statusCodes to logging using the Edge Microgateway logger object: logger.error(err, 'failed in error handler');. For codes received from targets between 100 and 300, errors-middleware.js rewrites the statusCode to 500 for return to the client.

  • HTTP 404 - You may see this status produced as a stack trace with the message, no match found for [API_path_name].

Module errors and warnings

You can use this information to configure alerts that help you monitor and manage your Edge Microgateway deployment.

The following terms, which appear in the error reference under "Handler," indicate how the various errors are handled in Edge Microgateway.

  • assert: Typically, Edge Microgateway will stop when an assert evaluation fails. However, that may not always be the case, since "asserts" throw exceptions that may be caught.
  • throws: Possible system halt.
  • callback: The error is passed to a callback and the system may continue.
Type Message Handler Notes

microgateway module

error org is required assert assert(options.org,"org is required");
error env is required assert assert(options.env,"env is required")
error username is required assert assert(options.username || options.token,"username is required");
error password is required assert assert(options.password || options.token,"password is required")
error org is required assert assert(options.org,"org is required");
error env is required assert assert(options.env,"env is required")
error username is required assert assert(options.username || options.token,"username is required");
error password is required assert assert(options.password || options.token,"password is required")
error org is required assert assert(options.org,"org is required");
error env is required assert assert(options.env,"env is required")
error org is required assert assert(options.org,"org is required");
error env is required assert assert(options.env,"env is required")
error username is required assert assert(options.username, 'username is required');
error password is required assert assert(options.password, 'password is required');
error org is required assert assert(options.org, 'org is required');
error env is required assert assert(options.env, 'env is required');
error must have an assigned target file assert assert(targetFile, 'must have an assigned target file')
error must have a key assert assert(key, 'must have a key');
error must have a secret assert assert(secret, 'must have a secret');
error dir must be configured assert assert(dir, 'dir must be configured')
error callback must be present assert assert(callback, 'callback must be present')
error username is required assert assert(options.username, 'username is required');
error password is required assert assert(options.password, 'password is required');
error org is required assert assert(options.org, 'org is required');
error env is required assert assert(options.env, 'env is required');
error runtimeUrl is required assert assert(options.runtimeUrl, 'runtimeUrl is required');
error mgmtUrl is required assert assert(options.mgmtUrl, 'mgmtUrl is required');
error file is required assert assert(options.file,"file is required")
error must have target assert assert(options.target, 'must have target');
error plugins not configured assert assert(config.edgemicro.plugins, 'plugins not configured');
error plugin dir does not exist: + pluginDir assert assert(fs.existsSync(pluginDir), 'plugin dir does not exist: ' + pluginDir);
error plugin dir is not a directory: + pluginDir assert assert(stat.isDirectory(), 'plugin dir is not a directory: ' + pluginDir);
error error reading plugin dir: + pluginDir assert assert(dirs, 'error reading plugin dir: ' + pluginDir);
error must have a token assert assert(token, 'must have a token');
error configpath cant be empty assert assert(config, 'configpath cant be empty');
error must have EDGEMICRO_KEY assert assert(key, 'must have EDGEMICRO_KEY');
error must have EDGEMICRO_SECRET assert assert(secret, 'must have EDGEMICRO_SECRET');
error config does not exist throws related to yaml file
error edgemicro seems to be already running. console.error attempting to overwrite a .sock file
error Failed to check for change in Config. Will retry after console.error problem with edge communication
error If the server is not running, it might because of incorrect shutdown of the prevous start. console.error
error Missing %s, Please run console.error Missing (.*), Please run
error Reloading edgemicro was unsuccessful console.error command level
error Stopping edgemicro was unsuccessful console.error Command level
error 'Try removing ' + ipcPath + ' and start again' console.error
error 'cache configuration ' + cache + ' does not exist. exiting.' console.error
error config file could not be written: console.error Configuration will fail
error config file did not download: console.error Configuration will fail
error edge micro failed to start console.error It should not be running
error edgemicro is not running. console.error Check process it should not be listed
error env is required console.error Environment variables required to run
error error - editing apiproxy Callout.xml console.error File access
error error - editing apiproxy default.xml console.error File access
error error checking for cert. Installing new cert. console.error Public key can not be used
error error retrieving region for org console.error key-gen.js, cert-lib.js, and private.js
error error uploading credentials console.error Cannot sync public key with Edge
error failed console.error key-gen.js
error failed to init configpath file %s console.error Configuration not loading
error invalid response from region api console.error key-gen.js, cert-lib.js, and private.js
error key is required console.error Parameter
error org is required console.error Parameter
error port is not available. console.error Parameter
error secret is required console.error Parameter
error url protocol not supported: console.error Config information indicates an internet protocol not in the scope of Edge Microgateway
error verifying analytics negative case: FAIL console.error Possible crash/fail
error verifying analytics with payload: FAIL console.error Possible crash/fail
error verifying bootstrap url availability:FAIL console.error Possible crash/fail
error verifying jwt_public_key availability: FAIL console.error Possible crash/fail
error verifying products availability: FAIL console.error Possible crash/fail
error verifying quota with configured products: FAIL console.error Possible crash/fail
warn failed to retieve config from gateway. continuing, will try cached copy.. console.error
warn KVM already exists in your org console.log
warn is already deployed console.log
warn sequenced plugin not found: console.warn
warn pluginDir %s does not exist console.log pluginDir (.*) does not exist

microgateway-core module

error config not initialized assert assert(config, 'config not initialized')
error must have a config assert assert(config, ' must have a config')
error must have config assert assert(config, 'must have config')
error config must have uid assert assert(config.uid, 'config must have uid');
error must have config.edgemicro.logging in config assert assert(logConfig, 'must have config.edgemicro.logging in config');
error must have request method assert assert(httpLibrary.request, 'must have request method');
error must have plugin loaded in memory assert assert(options.plugin, "must have plugin loaded in memory");
error init must be a function assert assert(_.isFunction(options.plugin.init), 'init must be a function');
error must have plugin name assert assert(options.pluginName, "must have plugin name");
error ignoring invalid plugin handlers + name assert assert(_.isObject(middleware), 'ignoring invalid plugin handlers ' + name);
error options must contain config assert assert(config, 'options must contain config')
error plugin must have a name assert assert(name,"plugin must have a name")
error name must be a string assert assert(_.isString(name),"name must be a string");
error plugin must be a function assert assert(_.isFunction(plugin),"plugin must be a function(config,logger,stats){return {onresponse:function(req,res,data,next){}}}");
error must have a key assert assert(key, 'must have a key');
error must have a secret assert assert(secret, 'must have a secret');
error must have a source config directory assert assert(source, 'must have a source config directory');
error error loading plugin console.error Plug-in not loaded
error failed in error handler callback HTTP server.on() function
error header length more than allowed size HTTP error Does not run plugin
error response finished before work can be done logger.error Target plug-in does not run
error handler threw an exception callback Capture error from plug-in (catch)
error error starting edge micro callback Edge Microgateway does not start
error plugin must be a function throws
warn console.error warns Log writing
warn targetRequest error invoke target error handling HTTP client error in connection with target
warn targetResponse error invoke target error handling HTTP target server error in connection with target as seen in client

microgateway-config module

error allow_message assert assert(+config.quota.allow > 0, allow_message);
error config does not exist throws Configuration yaml file
error config is empty throws Configuration yaml file
error config is not a file throws Configuration yaml file
error config is not defined assert assert(config, 'config is not defined');
error config.analytics.batchSize is invalid assert assert(+config.analytics.batchSize > 0, 'config.analytics.batchSize is invalid');
error config.analytics.batchSize is not a number assert assert(typeof config.analytics.batchSize === 'number', 'config.analytics.batchSize is not a number');
error config.analytics.bufferSize is invalid assert assert(+config.analytics.bufferSize > 0, 'config.analytics.bufferSize is invalid');
error config.analytics.bufferSize is not a number assert assert(typeof config.analytics.bufferSize === 'number', 'config.analytics.bufferSize is not a number');
error config.analytics.flushInterval is invalid assert assert(+config.analytics.flushInterval > 0, 'config.analytics.flushInterval is invalid');
error config.analytics.flushInterval is not a number assert assert(typeof config.analytics.flushInterval === 'number', 'config.analytics.flushInterval is not a number');
error config.analytics.proxy is not "dummy" assert assert(config.analytics.proxy === 'dummy', 'config.analytics.proxy is not "dummy"');
error config.analytics.proxy is not defined assert assert(config.analytics.proxy, 'config.analytics.proxy is not defined');
error config.analytics.proxy_revision is not a number assert assert(typeof config.analytics.proxy_revision === 'number', 'config.analytics.proxy_revision is not a number');
error config.analytics.proxy_revision is not defined assert assert(config.analytics.proxy_revision, 'config.analytics.proxy_revision is not defined');
error config.analytics.source is not "microgateway" assert assert(config.analytics.source === 'microgateway', 'config.analytics.source is not "microgateway"');
error config.analytics.source is not defined assert assert(config.analytics.source, 'config.analytics.source is not defined');
error config.analytics.uri is not a string assert assert(typeof config.analytics.uri === 'string', 'config.analytics.uri is not a string');
error config.analytics.uri is not defined assert assert(config.analytics.uri, 'config.analytics.uri is not defined');
error config.apikeys.public_key is not defined assert assert(typeof config.apikeys.public_key === 'string', 'config.apikeys.public_key is not defined');
error config.edge_config is not defined assert assert(config.edge_config, 'config.edge_config is not defined');
error config.edge_config.bootstrap is not defined assert assert(config.edge_config.bootstrap, 'config.edge_config.bootstrap is not defined');
error config.edge_config.jwt_public_key is not defined assert assert(config.edge_config.jwt_public_key, 'config.edge_config.jwt_public_key is not defined');
error config.edge_config.proxy must be defined if config.edge_config.proxy_tunnel is defined assert assert(typeof config.edge_config.proxy !== 'undefined', 'config.edge_config.proxy must be defined if config.edge_config.proxy_tunnel is defined');
error config.edge_config.proxy_tunnel is not a boolean assert assert(typeof config.edge_config.proxy_tunnel === 'boolean', 'config.edge_config.proxy_tunnel is not a boolean');
error config.edge_config.refresh_interval is not a number assert assert(typeof config.edge_config.refresh_interval === 'number', 'config.edge_config.refresh_interval is not a number');
error config.edge_config.refresh_interval is too small (min 1h) assert assert(config.edge_config.refresh_interval >= 3600000, 'config.edge_config.refresh_interval is too small (min 1h)');
error config.edge_config.retry_interval is not a number assert assert(typeof config.edge_config.retry_interval === 'number', 'config.edge_config.retry_interval is not a number');
error config.edge_config.retry_interval is too small (min 5s) assert assert(config.edge_config.retry_interval >= 5000, 'config.edge_config.retry_interval is too small (min 5s)');
error config.edgemicro is not defined assert assert(config.edgemicro, 'config.edgemicro is not defined');
error config.edgemicro.logging is not defined assert assert(config.edgemicro.logging, 'config.edgemicro.logging is not defined');
error config.edgemicro.logging.dir is not defined assert if (!config.edgemicro.logging.to_console) assert(config.edgemicro.logging.dir, 'config.edgemicro.logging.dir is not defined');
error config.edgemicro.logging.level is not defined assert assert(config.edgemicro.logging.level, 'config.edgemicro.logging.level is not defined');
error config.edgemicro.max_connections is not a number assert assert(typeof config.edgemicro.max_connections === 'number', 'config.edgemicro.max_connections is not a number');
error config.edgemicro.max_connections is not defined assert assert(config.edgemicro.max_connections, 'config.edgemicro.max_connections is not defined');
error config.edgemicro.plugins.sequence is not an array assert assert(Array.isArray(config.edgemicro.plugins.sequence), 'config.edgemicro.plugins.sequence is not an array');
error config.edgemicro.port is not defined assert assert(config.edgemicro.port, 'config.edgemicro.port is not defined');
error config.oauth.allowInvalidAuthorization is not defined assert assert(typeof config.oauth.allowInvalidAuthorization === 'boolean', 'config.oauth.allowInvalidAuthorization is not defined');
error config.oauth.allowNoAuthorization is not defined assert assert(typeof config.oauth.allowNoAuthorization === 'boolean', 'config.oauth.allowNoAuthorization is not defined');
error config.oauth.public_key is not defined assert assert(typeof config.oauth.public_key === 'string', 'config.oauth.public_key is not defined');
error config.oauthv2.public_key is not defined assert assert(typeof config.oauthv2.public_key === 'string', 'config.oauthv2.public_key is not defined');
error config.proxies is not defined assert assert(config.proxies, 'config.proxies is not defined');
error config.proxy[ + index + ].base_path is not defined assert assert(proxy.base_path, 'config.proxy[' + index + '].base_path is not defined');
error config.proxy[ + index + ].max_connections is not a number assert assert(typeof proxy.max_connections === 'number', 'config.proxy[' + index + '].max_connections is not a number');
error config.proxy[ + index + ].max_connections is not defined assert assert(proxy.max_connections, 'config.proxy[' + index + '].max_connections is not defined');
error config.proxy[ + index + ].name is not defined assert assert(proxy.name, 'config.proxy[' + index + '].name is not defined');
error config.proxy[ + index + ].proxy_name is not defined assert assert(proxy.target_name, 'config.proxy[' + index + '].proxy_name is not defined');
error config.proxy[ + index + ].revision is not defined assert assert(proxy.revision, 'config.proxy[' + index + '].revision is not defined');
error config.proxy[ + index + ].url is not defined assert assert(proxy.url, 'config.proxy[' + index + '].url is not defined');
error config.quota.allow is not a number assert assert(typeof config.quota.allow === 'number', 'config.quota.allow is not a number');
error config.quota.allow is not defined assert assert(config.quota.allow, 'config.quota.allow is not defined');
error config.quota.interval is not a number assert assert(typeof config.quota.interval === 'number', 'config.quota.interval is not a number');
error config.quota.interval is not defined assert assert(config.quota.interval, 'config.quota.interval is not defined');
error config.spikearrest is not defined assert assert(config.spikearrest, 'config.spikearrest is not defined');
error config.spikearrest.allow is invalid assert assert(+config.spikearrest.allow > 0, 'config.spikearrest.allow is invalid');
error config.spikearrest.allow is not a number assert assert(typeof config.spikearrest.allow === 'number', 'config.spikearrest.allow is not a number');
error config.spikearrest.allow is not defined assert assert(config.spikearrest.allow, 'config.spikearrest.allow is not defined');
error config.spikearrest.bufferSize is invalid assert assert(+config.spikearrest.bufferSize > 0, 'config.spikearrest.bufferSize is invalid');
error config.spikearrest.bufferSize is not a number assert assert(typeof config.spikearrest.bufferSize === 'number', 'config.spikearrest.bufferSize is not a number');
error config.spikearrest.timeUnit is not defined assert assert(config.spikearrest.timeUnit, 'config.spikearrest.timeUnit is not defined');
error CRITICAL ERROR: error parsing downloaded product list callback
error CRITICAL ERROR: error parsing downloaded proxy list callback
error DETECTED PRODUCT MISCONFIGURATION ERROR console.error Followed by console.warn('using old cached configuration');
error error reading config from throws Configuration yaml file
error error saving config to callback Configuration yaml file
error fatal: cached config not available, unable to continue callback
error interval_message assert assert(+config.quota.interval > 0, interval_message);
error invalid protocol for config.edge_config.proxy (expected http: or https:: + proxy_url.protocol) assert assert(proxy_url.protocol === 'http:' || proxy_url.protocol === 'https:', 'invalid protocol for config.edge_config.proxy (expected http: or https:): ' + proxy_url.protocol);
error invalid proxy host for config.edge_config.proxy assert assert(proxy_url.hostname, 'invalid proxy host for config.edge_config.proxy: ' + proxy_url.hostname);
error it looks like edge micro has not been configured, please see the admin guide callback Result: Fails to load configuration
error key is missing assert assert(keys.key, 'key is missing');
error must have configDir assert assert(configDir, 'must have configDir')
error must have options assert assert(options, 'must have options');
error must have source assert assert(source, 'must have source')
error must have source to load from assert assert(options.source, 'must have source to load from')
error must have targetFile assert assert(fileName, 'must have targetFile')
error options cannot be null assert assert(options, 'options cannot be null');
error options.keys cannot be null assert assert(options.keys, 'options.keys cannot be null');
error port_message assert assert(+config.edgemicro.port < 65536, port_message);
error products should be an array assert assert(Array.isArray(products), 'products should be an array');
error 'proxies for product ' + product + ' should be an array' assert assert(Array.isArray(product.proxies), 'proxies for product ' + product + ' should be an array');
error secret is missing assert assert(keys.secret, 'secret is missing');
error target is not set assert assert(target, 'target is not set');
warn error downloading config, please check bootstrap configuration console.warn
warn failed to download jwt_public_key console.warn
warn jwk keys are not enabled console.warn
warn message, 'download from', url, 'returned' console.warn Search for: (.*)\sdownload from\s(.*)\sreturned
warn no edge micro products found in response console.warn
warn no edge micro proxies found in org console.warn
warn no edge micro proxies found in response console.warn
warn no products found in org console.warn
warn no products found in response console.warn
warn using old cached configuration console.warn

microgateway-plugins module

error config does not exist throws Related to yaml file
error apikey HTTP response Failures in apiky plugin
error bauth HTTP response Failures in bauth plugin
error extauth HTTP response Failures in extauth plugin
error Oauth HTTP response Failures in oauth plugin
warn Error encountered processing Apigee analytics. Allowing request processing to continue logger.error
warn ignoring err console.warn apikeys, oauth, and oauthv2 plug-ins
warn error parsing jwt: console.warn
warn oath response object lacks setHeader console.warn oauth parameter error indicates some errors will not be reported.
warn oath response object is not supplied by runtime console.warn oauth parameter error
warn oath stats object is not supplied by runtime console.warn oauth parameter error

apigeetool-node module

error Delete Cache failed with status code %d', res.statusCode callback Thrown in deletecache.js. Status code from Apigee Edge. Passes to callback a stack trace error with this message: done(new Error(errMsg));
error Delete Product failed with status code %d', res.statusCode callback Thrown in deleteproduct.js. Status code from Apigee Edge. Passes to callback a stack trace error with this message: done(new Error(errMsg));
error org, api and revision must all be specified! callback Thrown in fetchproxy.js. Configuration error.
error Received error %d when fetching proxy: %j callback Thrown in fetchproxy.js. Status code other than 200.
error Create App failed with status code %d callback Thrown in createapp.js. Passes all errors back to callbacks as stack trace errors. Makes no console prints or log entries.
error command + ' failed with status code %d callback Thrown in command-utils.js. For whatever command is parsed and passed to this module, any code not 200 or 201 will generate an error message. Formats this message but does not print. Passes a stack trace error with the message back to callbacks.
error Received error %d when fetching shared flow: %s callback Thrown in fetchsharedflow.js. For any HTTP status that's not 200. If it succeed but fails to write a file, it writes to the console:
Failed to write file
Error text: [stack_trace_error]
error Create KeySecret failed with status code %d', res.statusCode callback Thrown in createappkey.js. For HTTP status codes from Apigee Edge that aren't 200 or 201.
error Create Cache failed with status code %d', res.statusCode callback Thrown in createcache.js. For HTTP status codes from Apigee Edge that aren't 200 or 201.
error Create Product failed with status code %d', res.statusCode callback Thrown in createproduct.js. For HTTP status codes from Apigee Edge that aren't 201. If the HTTP status is 201 but the response includes error JSON, the error JSON is forwarded to the callback.
error Delete App failed with status code %d', res.statusCode callback Thrown in deleteapp.js. For HTTP status codes from Apigee Edge that aren't 200. If the HTTP status is 200 but the response includes error JSON, the error JSON is forwarded to the callback.
error Create Developer failed with status code %d', res.statusCode callback Thrown in createdeveloper.js. For HTTP status codes from Apigee Edge that aren't 201. If the HTTP status is 201 but the response includes error JSON, the error JSON is forwarded to the callback.
error Delete Developer failed with status code %d', res.statusCode callback Thrown in deletedeveloper.js. For HTTP status codes from Apigee Edge that aren't 200. If the HTTP status is 200 but the response includes error JSON, the error JSON is forwarded to the callback.

Plug-in errors

accesscontrol plug-in

This section describes the error codes and messages that are returned by the accesscontrol plug-in with descriptions of possible causes.

Error Message HTTP status Possible Causes
Not printed Forbidden 403 Access control rule

accumulate-request plug-in

This section describes the error codes and messages that are returned by the accumulate-request plug-in with descriptions of possible causes.

No errors generated.

accumulate-resopnse plug-in

This section describes the error codes and messages that are returned by the accumulate-response plug-in with descriptions of possible causes.

No errors generated.

analytics plug-in

This section describes the error codes and messages that are returned by the analytics plug-in with descriptions of possible causes.

Errors encountered processing Apigee analytics are written to the Edge Microgateway log. Edge Microgateway processing continues.

apikeys plug-in

This section describes the error codes and messages that are returned by the apikeys plug-in with descriptions of possible causes.

Error Message HTTP status Possible Causes
invalid_request Invalid Request 400 allowNoAuthorization == false

No Authorization header in the HTTP request

allowOAuthOnly == true

invalid_request API Key Verification URL not configured 400 Verification API service not in header.
access_denied Copy service message 403 In response to the auth service timeout
missing_authorization Missing API Key header 401 allowAPIKeyOnly == true

Unless allowInvalidAuthorization

invalid_authorization Invalid Authorization header 401 allowOAuthOnly == true

Authorization-header not in HTTP

gateway_timeout Copy service message 504 In response to the auth timeout
default 500 All other not categorized

bauth plug-in

This section describes the error codes and messages that are returned by the bauth plug-in with descriptions of possible causes.

Error Message HTTP status Possible Causes
missing_authorization Missing API Key header 401 allowAPIKeyOnly == true

Unless allowInvalidAuthorization

invalid_authorization Invalid Authorization header 401 allowOAuthOnly == true

Authorization-header not in HTTP

gateway_timeout Copy service message 504 In response to the auth timeout
default 500 All other not categorized

cloud-foundry-route-service plug-in

This section describes the error codes and messages that are returned by the cloud-foundry-route-service plug-in with descriptions of possible causes.

No errors generated.

cors plug-in

This section describes the error codes and messages that are returned by the cors plug-in with descriptions of possible causes.

No errors generated.

eurekaclient plug-in

This section describes the error codes and messages that are returned by the eurekaclient plug-in with descriptions of possible causes.

The eurekaclient plug-in throws a few console errors only, including a stack trace error on failed start and a warning about the target endpoint from Eureka not found.

extauth plug-in

This section describes the error codes and messages that are returned by the extauth plug-in with descriptions of possible causes.

Error Message HTTP status Possible Causes
invalid_request Invalid Request 400 allowNoAuthorization == false

No Authorization header in the HTTP request

allowOAuthOnly == true

invalid_request API Key Verification URL not configured 400 Verification API service not in header.
access_denied Copy service message 403 In response to the auth service timeout
missing_authorization Missing API Key header 401 allowAPIKeyOnly == true

Unless allowInvalidAuthorization

invalid_authorization Invalid Authorization header 401 allowOAuthOnly == true

Authorization-header not in HTTP

gateway_timeout Copy service message 504 In response to the auth timeout
default 500 All other not categorized

header-uppercase plug-in

This section describes the error codes and messages that are returned by the header-uppercase plug-in with descriptions of possible causes.

No errors generated.

healthcheck plug-in

This section describes the error codes and messages that are returned by the healthcheck plug-in with descriptions of possible causes.

Error Message HTTP status Possible Causes
503 Too busy. No messages in HTTP or console
default Application is not running on specified application port 500 All other not categorized

invalidHeader plug-in

This section describes the error codes and messages that are returned by the invalidHeader plug-in with descriptions of possible causes.

No errors generated.

json2xml plug-in

This section describes the error codes and messages that are returned by the json2xml plug-in with descriptions of possible causes.

Parsing errors are sent to a callback.

Error Message HTTP status Possible Causes
default 500 All other not categorized

monitor plug-in

This section describes the error codes and messages that are returned by the monitor plug-in with descriptions of possible causes.

No errors generated.

oauth plug-in (v1)

This section describes the error codes and messages that are returned by the oauth plug-in (v1) with descriptions of possible causes.

Error Message HTTP status Possible Causes
invalid_request Invalid Authorization Header 400
  • allowNoAuthorization attribute == false
  • allowOAuthOnly == true
  • No Authorization header in the HTTP request
invalid_request API Key Verification URL not configured 400 Verification API service not in header.
Access_denied Copy service message 403 In response to the auth service timeout
invalid_token Missing API Key header 401 allowAPIKeyOnly == true

Unless allowInvalidAuthorization is set

invalid_token token could not be parsed 401 allowAPIKeyOnly == true

Bad token delivered

missing_authorization Missing Authorization header 401 allowNoAuthorization == false

Authorization-header in HTTP

allowOAuthOnly == true

invalid_authorization Invalid Authorization header 401 allowOAuthOnly == true

Authorization-header not in HTTP

gateway_timeout Copy service message 504 In response to the auth timeout
default 500 All other uncategorized responses

oauthv2 plug-in

This section describes the error codes and messages that are returned by the oauthv2 plug-in with descriptions of possible causes.

Error Message HTTP status Possible Causes
invalid_request Invalid Authorization Header 400
  • allowNoAuthorization attribute == false
  • allowOAuthOnly == true
  • No Authorization header in the HTTP request
invalid_request API Key Verification URL not configured 400 Verification API service not in header
access_denied Copy service message 403 In response to the auth service timeout
invalid_token Missing API Key header 401 allowAPIKeyOnly == true

Unless allowInvalidAuthorization is set

invalid_token token could not be parsed 401 allowAPIKeyOnly == true

Bad token delivered

missing_authorization Missing Authorization header 401 allowNoAuthorization == false

Authorization-header in HTTP

allowOAuthOnly == true

invalid_authorization Invalid Authorization header 401 allowOAuthOnly == true

Authorization-header not in HTTP

gateway_timeout Copy service message 504 In response to the auth timeout
default 500 All other uncategorized responses

quota plug-in

This section describes the error codes and messages that are returned by the quota plug-in with descriptions of possible causes.

Defers to volos quota/apigee.

Error Message HTTP status Possible Causes
invalid_authorization Invalid Authorization header 401 allowOAuthOnly == true

Authorization-header not in HTTP

gateway_timeout Not authorized to call the remote proxy. Check the "key" parameter. 404 In response to the auth timeout
default 500 All other not categorized
throw uri parameter must be specified apigeequota.js
throw key parameter must be specified apigeequota.js
callback Apigee Remote Proxy not found at: ' + self.uri + '. Check your configuration apigeequota.js
callback HTTP error getting proxy version: %d. Check the "uri" parameter. apigeequota.js
callback Quotas with a fixed starting time are not supported apigeequota.js
callback Error updating remote quota: %d %s', resp.statusCode, body apigeequota.js

If there is an error on an entry in the product list, the product list will stop being processed.

quota-memory plug-in

This section describes the error codes and messages that are returned by the quota-memory plug-in with descriptions of possible causes.

Defers to volos quota/apigee.

Error Message HTTP status Possible Causes
invalid_authorization Invalid Authorization header 401 allowOAuthOnly == true

Authorization-header not in HTTP

gateway_timeout Not authorized to call the remote proxy. Check the "key" parameter. 404 In response to the auth timeout
default 500 All other not categorized
throw start time not allowed for month time units quota.js. volos error on time format.
throw Invalid start time %s quota.js. volos error on time format.
throw Invalid timeUnit %s quota.js. volos error on time format.

If there is an error on an entry in the product list, the product list will stop being processed.

spikearrest plug-in

This section describes the error codes and messages that are returned by the spikearrest plug-in with descriptions of possible causes.

Defers to volos spikearrest/memory.

Error Message HTTP status Possible Causes
SpikeArrest engaged 503 Traffic spike. This is expected behavior.
throw Invalid timeUnit %s spikearrest.js
callback key must be a string spikearrest.js
throw %s must be a number', name spikearrest.js

transform-uppercase plug-in

This section describes the error codes and messages that are returned by the transform-uppercase plug-in with descriptions of possible causes.

No errors generated.