Deprecations

17 minute read

API Builder regularly adds feature improvements, fixes, and occasionally identify and fix features that do not work as designed, or are orthogonal to the intended direction of the product. When these are identified, we mark them as deprecated and add them to this document. We intend to remove all the deprecated features in the next major release of the product.

Direct or indirect use of deprecated features may result in a warning when the service starts. This should not affect the functionality of your service, but the flags should be an indication that, if ignored, your service may fall behind any future breaking changes and may increase the effort to upgrade to future major releases.

Deprecation flags

Where fixing a bug or introducing a feature would introduce a breaking change, we create a deprecation flag that is disabled by default, meaning that it will have no impact on your project. However, it should not be ignored. These flags are provided to allow you to manually review the change and be aware of a functional change that may also require code or config to be modified.

When addressing deprecation warnings with corresponding flags, you should compare the following set of flags with those located in your ./conf/default.js. The full set of flags is below for convenience. In upgraded applications, the flags will be disabled. However, newly created applications will have these flags enabled. For each deprecation warning, you should find the corresponding deprecation below, read the document, and understand how it applies to your application. To ensure that your application continues to operate as expected, it is essential that you have unit-tests for all your interfaces. Enabling a flag, without understanding or testing the impact can have adverse effects.

// ./conf/default.js

module.exports = {
	// Flags to enable features that are not ready for production or
	// whose use may require manual upgrade steps in legacy services.
	flags: { 
		// Enable support for Models that have no primary key.
		// Breaking change for old versions as previously the Create API returned a location
		// header. Also the model advertised unsupported methods.
		enableModelsWithNoPrimaryKey: false,
		// Generate APIs and flows that use primary key type rather than always assuming string.
		// Breaking change for old versions as the generated APIs will change when enabled.
		usePrimaryKeyType: false,
		// Enabling this flag will cause the service to exit when there is a problem loading a plugin.
		exitOnPluginFailure: false,
		// Enable support for aliases in comparison operators on composite models.
		// Breaking change for old versions as previously queries $lt, $gt, $lte, $gte, $in, $nin,
		// $eq would not have translated aliased fields.
		enableAliasesInCompositeOperators: false,
		// Enable support for the $like comparison operator in the Memory connector.
		enableMemoryConnectorLike: false,
		// Enabling this flag ensures that a plugin only receives the config relevant to that plugin.
		enableScopedConfig: false,
		// Enable support for model names being percent-encoded as per RFC-3986 in auto-generated API.
		// Breaking change for old versions as previously names like "foo/bar" will now be encoded as
		// "foo%2Fbar".
		enableModelNameEncoding: false,
		// Enable support for null fields coming from Models.
		enableNullModelFields: false,
		// Enable support for model names being percent-encoded as per RFC-3986 in API Builder's Swagger.
		// Breaking change for old versions as previously names like "foo/bar" will now be encoded as
		// "foo%2Fbar".
		enableModelNameEncodingInSwagger: false,
		// Enable support for model names being encoded whilst preserving the connector's slash.
		// This flag only applies when enableModelNameEncodingInSwagger is enabled.
		// Breaking change for old versions as previously model names that start with a connector name,
		// e.g. "oracle/foó" will now be encoded as "oracle/fo%C3%B3".
		enableModelNameEncodingWithConnectorSlash: false,
		// Enable support for overriding endpoint content-type using the flow's HTTP response headers.
		enableOverrideEndpointContentType: false,
		// Enable support for model flow-nodes having Error outputs.
		enableModelErrorOutputs: false,
		// Enabling this flag will cause the service to exit when there is an error validating the service
		// Swagger or any loaded JSON schema.
		exitOnSwaggerSchemaValidationError: false,
		// Enabling this flag will emit the log level in each log message.
		enableLoggingOfLevel: false,
		// Enabling this flag will ignore HTTP payload body on GET and HEAD methods.
		enableStrictBodyPayloads: false,
		// Disables endpoints
		disableEndpoints: false,
	}
}

List of deprecated features

The following sections list the deprecated features.

[D001] /apidoc/docs.json

Introduced in release v4 (2018-06-29)
Expected end of life Q3 2023
Status Active

Swagger API docs are available on /apidoc/swagger.json and are mirrored on /apidoc/docs.json. Using the /apidoc/docs.json endpoint to access Swagger API documentation is deprecated and /apidoc/swagger.json should be used instead.

[D002] apiDocPrefix

Introduced in release Boston (2018-08-03)
Expected end of life Q3 2023
Status Active

Usage of admin.apiDocPrefix in the project configuration has been deprecated. Use apidoc.prefix instead. If both values are provided, apidoc.prefix will be preferred.

[D003] disableAPIDoc

Introduced in release Boston (2018-08-03)
Expected end of life Q3 2023
Status Active

Usage of admin.disableAPIDoc in the project configuration has been deprecated.

[D004] enableModelsWithNoPrimaryKey

Introduced in release Canberra (2018-08-17)
Expected end of life Q3 2023
Status Active

For models that do not have a primary key:

  • The delete, findAndModify, findByID, upsert, and update APIs and endpoints will not be generated.
  • The Model flow-node will not have delete, findAndModify, findByID, upsert, or update methods.
  • The Create API will no longer return a location header.

This will be the default behavior in all new services. For more information on how to be prepared for the change, and to start using the new behavior now, refer to Removal of unsupported APIs on Models that do not have a primary key.

[D005] usePrimaryKeyType

Introduced in release Canberra (2018-08-17)
Expected end of life Q3 2023
Status Active

model IDs are based on the database’s primary key type instead of being hard-coded as a string.

This will be the default behavior in all new services. For more information on how to be prepared for the change, and to start using the new behavior now, refer to Removal of strings as default Model IDs.

[D006] exitOnPluginFailure

Introduced in release Dublin (2018-08-31)
Expected end of life Q3 2023
Status Active

Errors when loading API Builder plugins will cause the service to terminate.

This will be the default behavior in all new services. For more information on how to be prepared for the change, and to start using the new behavior now, refer to Change in the loading of plugins when errors occur.

[D007] enableAliasesInCompositeOperators

Introduced in release Eden (2018-09-14)
Expected end of life Q3 2023
Status Active

Queries on Composite Models will support comparison operators ($eq, $ne, $in, $nin, $lt, $lte, $gt, $gte, $like) on aliased fields.

This will be the default behavior in all new services. For more information on how to be prepared for the change, and to start using the new behavior now, refer to Change in the handling of comparison operators on composite models.

[D008] enableMemoryConnectorLike

Introduced in release Eden (2018-09-14)
Expected end of life Q3 2023
Status Active

queries on models using the Memory connector that also use the $like comparison operator will search using the query parameter instead of just returning an empty array.

This will be the default behavior in all new services. For more information on how to be prepared for the change, and to start using the new behavior now, refer to Change in the handling of memory model queries using $like comparison operator.

[D009] enableScopedConfig

Introduced in release Istanbul (2018-11-23)
Expected end of life Q3 2023
Status Active

when loading an API Builder plugin, you will only receive the config relevant to the uploaded plugin.

This will be the default behavior in all new services. For more information on how to be prepared for the change, and to start using the new behavior now, refer to Change in the way config is passed to plugins.

[D010] perURLAuthentication

Introduced in release Lisbon (2019-01-18)
Expected end of life Q3 2023
Status Active

authentication has changed to make all paths secure, and public paths must be explicitly declared.

For more information on how to be prepared for the change, refer to Change in the way of handling authentication and authentication plugins.

[D011] API Builder Web

Introduced in release Lisbon (2019-01-18)
Expected end of life Q3 2023
Status Active

API Builder Web is deprecated and will be removed in a future major version. If you are currently using Web Routes, consider switching to another modern web application architecture for your front end that consumes API Builder APIs.

[D012] enableModelNameEncoding

Introduced in release Osaka (2019-03-01)
Expected end of life Q3 2023
Status Active

model names are URI encoded as per RFC-3986, and the APIs that are auto-generated for models will bind to their URI equivalent.

This will be the default behavior in all new services. For more information on how to be prepared for the change, and to start using the new behavior now, refer to Change in the way model name is encoded in URI.

[D013] enableNullModelFields

Introduced in release Quebec (2019-03-29)
Expected end of life Q3 2023
Status Active

Queries on models, which have fields with null values, can now return that field in the response rather than hiding the field. Support for this behavior is dependent on the connector being used.

This will be the default behavior in all new services. For more information on how to be prepared for the change, and to start using the new behavior now, refer to Change in the way null fields are returned in Models.

[D014] enableModelNameEncodingInSwagger

Introduced in release Quebec (2019-03-29)
Expected end of life Q3 2023
Status Active

model names are URI encoded as per RFC-3986, and the APIs that are created from “Generate endpoints for models” will bind to their URI equivalent.

This will be the default behavior in all new services. For more information on how to be prepared for the change, and to start using the new behavior now, refer to Change in the way model name is encoded in Swagger.

[D015] enableModelNameEncodingWithConnectorSlash

Introduced in release Barcelona (2019-09-27)
Expected end of life Q3 2023
Status Active

model names which are prefixed with their connector name (in other words, oracle/user) will no longer have the slash encoded as %2F in auto-generated API paths.

This depends on D012.

This will be the default behavior in all new services. For more information on how to be prepared for the change, and to start using the new behavior now, refer to Change in the way model name with connector prefix is encoded in paths.

[D016] Model.define

Introduced in release Cairo (2019-10-11)
Expected end of life Q3 2023
Status Active

Model.define is deprecated and will be removed in a future version of the product. Use Model.extend or APIBuilder.createModel instead.

[D017] Model instance reduce and APIBuilder.Model.reduce

Introduced in release Cairo (2019-10-11)
Expected end of life Q3 2023
Status Active

Reducing a Model instance (i.e. Model.prototype.reduce) and APIBuilder.Model.reduce are deprecated and will be removed in a future version of the product.

For more information on how to be prepared for the change, refer to Removal of the Model instance reduce and APIBuilder.Model.reduce functions.

[D018] APIBuilder.removeModel

Introduced in release Cairo (2019-10-11)
Expected end of life Q3 2023
Status Active

APIBuilder.removeModel is deprecated and will be removed in a future version of the product.

[D019] APIBuilder.removeConnector

Introduced in release Cairo (2019-10-11)
Expected end of life Q3 2023
Status Active

APIBuilder.removeConnector is deprecated and will be removed in a future version of the product.

[D020] APIBuilder.removeBlock

Introduced in release Cairo (2019-10-11)
Expected end of life Q3 2023
Status Active

APIBuilder.removeBlock is deprecated and will be removed in a future version of the product.

[D021] APIBuilder.removeAPI

Introduced in release Cairo (2019-10-11)
Expected end of life Q3 2023
Status Active

APIBuilder.removeAPI is deprecated and will be removed in a future version of the product.

[D022] APIBuilder.removeAPIByFilename

Introduced in release Cairo (2019-10-11)
Expected end of life Q3 2023
Status Active

APIBuilder.removeAPIByFilename is deprecated and will be removed in a future version of the product.

[D023] APIBuilder.removeRoute

Introduced in release Cairo (2019-10-11)
Expected end of life Q3 2023
Status Active

APIBuilder.removeRoute is deprecated and will be removed in a future version of the product.

[D024] Model prefix

Introduced in release Cairo (2019-10-11)
Expected end of life Q3 2023
Status Active

Creating a Model with the prefix property is deprecated and will be removed in a future version of the product.

For more information on how to be prepared for the change, refer to Removal of Model prefix.

[D025] Model.prototype.extend

Introduced in release Cairo (2019-10-11)
Expected end of life Q3 2023
Status Active

Extending a model instance (i.e. Model.prototype.extend) is deprecated and will be removed in a future version of the product. Use Model.extend instead.

[D026] APIBuilder.app.locals

Introduced in release Cairo (2019-10-11)
Expected end of life Q3 2023
Status Active

APIBuilder.app.locals properties appc_external_url, appc_external_apidoc_path_legacy, appc_external_apidoc_path, or appc_external_apidoc_url are deprecated and will be removed in a future version of the product.

[D027] APIBuilder.debug

Introduced in release Cairo (2019-10-11)
Expected end of life Q3 2023
Status Active

APIBuilder.debug is deprecated and will be removed in a future version of the product.

[D028] Codeblocks

Introduced in release Cairo (2019-10-11)
Expected end of life Q3 2023
Status Active

codeblocks are deprecated and will be removed in a future version of the product.

For more information on how to be prepared for the change, refer to Removal of codeblocks.

[D029] @axway/api-builder-react-engine

Introduced in release Cairo (2019-10-11)
Expected end of life Q3 2023
Status Active

@axway/api-builder-react-engine is deprecated and will not receive any updates. If you are currently using Web Routes, consider switching to another modern web application architecture for your front end that consumes API Builder Service APIs.

[D030] APIBuilder.get

Introduced in release Cairo (2019-10-11)
Expected end of life Q3 2023
Status Active

APIBuilder.get is deprecated and will be removed in a future version of the product.

[D031] APIBuilder.pluralize

Introduced in release Cairo (2019-10-11)
Expected end of life Q3 2023
Status Active

APIBuilder.pluralize is deprecated and will be removed in a future version of the product. Use the pluralize module instead.

[D032] APIBuilder.singularize

Introduced in release Cairo (2019-10-11)
Expected end of life Q3 2023
Status Active

APIBuilder.singularize is deprecated and will be removed in a future version of the product. Use the pluralize module instead.

[D033] APIBuilder.logger.stripColors

Introduced in release Cairo (2019-10-11)
Expected end of life Q3 2023
Status Active

APIBuilder.logger.stripColors is deprecated and will be removed in a future version of the product.

[D034] Model.fields[name].optional and API.parameters[name].optional

Introduced in release Cairo (2019-10-11)
Expected end of life Q3 2023
Status Active

Using the optional property on Model fields and API parameters is deprecated and will be ignored in a future version of the product. Use the required property instead.

[D035] Logger.createDefaultLogger

Introduced in release Cairo (2019-10-11)
Expected end of life Q3 2023
Status Active

The static function Logger.createDefaultLogger is deprecated and will be removed in a future version of the product.

[D036] Logger.createRestifyLogger

Introduced in release Cairo (2019-10-11)
Expected end of life Q3 2023
Status Active

The static function Logger.createRestifyLogger is deprecated and will be removed in a future version of the product.

[D037] Sort

Introduced in release Ennis (2019-11-22)
Expected end of life Q3 2023
Status Active

Creating an API or Route with the sort property is deprecated in favor of a more robust internal sort mechanism.

[D038] Port

Introduced in release Florence (2019-12-06)
Expected end of life Q3 2023
Status Active

Usage of port in the project configuration has been deprecated. Use http.port instead.

[D039] Unmaintained Node.js versions

Introduced in release Jackson (2020-02-28)
Status Active

We introduced a Node.js support policy in which end-of-life Node.js versions are automatically deprecated by API Builder. See https://nodejs.org/en/about/releases for the versions which are actively maintained. While the versions we deem as deprecated are not recommended, API compatibility will be maintained until an explicit breaking change removes it. Only use Active LTS or Maintenance LTS Node.js versions in production.

[D040] Node.js v10

Introduced in release Jackson (2020-02-28)
Expected end of life Q3 2022
Status Active

Node.js v10 has been deprecated. See API Builder’s Node.js support policy. While the versions we deem as deprecated are not recommended, API compatibility will be maintained until an explicit breaking change removes it. Only use Active LTS or Maintenance LTS Node.js versions in production.

[D041] logger.logRequest and logger.logResponse

Introduced in release Jackson (2020-02-28)
Expected end of life Q3 2023
Status Active

The logRequest and logResponse functions on the API Builder logger are deprecated and will be removed in a future version of the product.

[D042] enableOverrideEndpointContentType

Introduced in release Tokyo (2020-07-31)
Expected end of life Q3 2023
Status Active

API Endpoints will no longer return the Content-Type application/json in all cases, the Content-Type will either be explicitly set from within a flow, or set according to the type of response body.

This will be the default behavior in all new services. For more information on how to be prepared for the change, and to start using the new behavior now, refer to Change in the way Endpoints return Content-Type.

[D043] enableModelErrorOutputs

Introduced in release Ufa (2020-08-14)
Expected end of life Q3 2023
Status Active

Model flow-nodes will gain an additional output, Error. This will be the default behavior when flows are generated from models in all new services.

This will be the default behavior in all new services. For more information on how to be prepared for the change, and to start using the new behavior now, refer to Change in the outputs of Model flow-nodes.

[D044] API.response

Introduced in release Zagreb (2020-10-23)
Expected end of life Q3 2023
Status Active

The response property on the custom API is deprecated in favor of the model property. The model property serves the same purpose in that the named model is used to describe the response schema in the generated API Swagger documentation.

[D045] exitOnSwaggerSchemaValidationError

Introduced in release Bruges (2020-11-20)
Expected end of life Q3 2023
Status Active

Validation errors when loading JSON schemas will cause the service to terminate. Additionally, the service’s Swagger API docs are now validated and will cause the service to terminate if found to be invalid.

This will be the default behavior in all new services. For more information on how to be prepared for the change, and to start using the new behavior now, refer to Addition of Swagger and json schema validation on start.

[D046] config.bodyParser

Introduced in release Faro (2021-01-29)
Expected end of life Q3 2023
Status Active

The bodyParser config option is deprecated and will be removed in a future version of the product.

[D047] config.busboy

Introduced in release Faro (2021-01-29)
Expected end of life Q3 2023
Status Active

The busboy config option is deprecated and will be removed in a future version of the product. Use config.limits to configure limits for multipart/form-data requests and return 413 to clients when a limit it hit.

[D048] undefinedMultipartPartSize

Introduced in release Faro (2021-01-29)
Expected end of life Q3 2023
Status Active

The new config.limits config option should be configured with a value. Leaving it unset is deprecated behavior and the default behavior will change in a future version of the product to be equivalent to setting infinity (no limit).

[D049] enableLoggingOfLevel

Introduced in release Giza (2021-02-12)
Expected end of life Q3 2023
Status Active

each log message will display it’s log level (e.g. INFO).

This will be the default behavior in all new services. For more information on how to be prepared for the change, and to start using the new behavior now, refer to Change in log message format for levels.

[D050] enableStrictBodyPayloads

Introduced in release Roberttown (2021-07-16)
Expected end of life Q3 2025
Status Active

HTTP methods GET and HEAD will ignore payload body. Enabling this flag is recommended for security purposes.

This will be the default behavior in all new services. For more information on how to be prepared for the change, and to start using the new behavior now, refer to Change in the way body is handled for HTTP methods GET and HEAD.

[D051] disableServerBanner

Introduced in release Wrecsam (2021-09-24)
Expected end of life Q3 2025
Status Active

The disableServerBanner config option has been deprecated in favor of http.headers.server.

[D052] runtimePeerDependency

Introduced in release Kabul (2022-04-08)
Expected end of life Q3 2025
Status Active

Using dependencies with a peerDependency on @axway/api-builder-runtime has been deprecated and may cause issues when using npm 7 or higher.

For more information on how to be prepared for the change, refer to Change in the way plugins document API Builder compatibility.

[D053] disableEndpoints

Introduced in release London (2022-04-22)
Expected end of life Q3 2025
Status Active

Endpoints are deprecated and have been replaced with the OpenAPI flow-trigger. Follow this guide to replace endpoints in your service.

[D054] apidoc.disabled

Introduced in release London (2022-04-22)
Expected end of life Q3 2025
Status Active

Usage of apidoc.disabled to stop OpenAPI documentation being accessible has been deprecated and should not be used.

[D055] Node.js v14

Introduced in release Oyo (2022-06-03)
Expected end of life Q3 2022
Status Active

Node.js v14 has been deprecated. API compatibility will be maintained until API Builder v5. See API Builder’s Node.js support policy.

[D056] disableLegacyHeaders

Introduced in release Unna (2022-08-26)
Expected end of life Q3 2025
Status Active

Automatically sending HTTP response headers “server”, “content-md5”, and “etag” are deprecated and will no longer be sent unless explicitly enabled in http.headers configuration.

For more information on how to be prepared for the change, refer to Change in default behavior for HTTP response headers.

Last modified June 3, 2022: Oyo Release Notes (#86) (99e2cf0)