NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #4248 most downloaded on pub.dev
Bones_API - A powerful API backend framework for Dart. It comes with a built-in HTTP Server, route handler, entity handler, SQL translator, and DB adapters.
Last release 19 days ago
02 Sep 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
353 releases · first in 2021
Fix resolution of EntityReferenceBase field table.
DBAdapter:
EntityReferenceBase field table.DBMemorySQLAdapter:
EntityReference.fromID: accepts null ID (works like asNull).
EntityReference.fromID: accepts null ID (works like asNull).Initializable:
InitializationChain._isParent: improve speed of search in the parent tree.Uint8List fields.One column per quarter.
EntityReference and EntityReferenceList:
enumFromName.IterableEnumExtension.Type.tryParse.EntityReference and EntityReferenceList:
fromJson.EntityRepository.selectFirstByQuery:
resolutionRules wasn't being passed to sub calls.Added APIRoot.currentAPIRequest.
APIRequest.id.APIRoot.currentAPIRequest.
APIRequest.id./API-INFO:
/API-INFO/userAPIRequest.parsingDuration.APIRepository.count.DBEntityRepositoryProvider.extraDependencies.Transaction.parentTransaction:
cacheEntity now also propagates cache to parentTransaction.EntityHandler:
Uint8List resolution: now accepts base64, HEX and Data URL.EntityReferenceList: a version of EntityReference for entities lists.EntityRepository._entitiesTracker: now tracked fields values are isolated from tracked entity.APISecurity._resolveAuthentication: avoid multiple parallel calls for user resolution.DBMemoryObjectAdapter.Added EntityReference: An entity field wrapper that allows lazy load of sub-entities.
EntityReference:
An entity field wrapper that allows lazy load of sub-entities.EntityResolutionRules to allow lazy or eager selects.EntityProvider:
getEntityByID: Added parameter sync.Added integration with AsyncEvent.
AsyncEvent.Improve fieldValueToSQL when the entity is from another adapter.
SQL:
isFullyDummy.DBSQLAdapter:
fieldValueToSQL when the entity is from another adapter.updateSQL and doUpdateSQL: return the ID even when the SQL.isDummy.APIRouteBuilder: Accepts Data URL for Uint8List parameters.
APIRouteBuilder: Accepts Data URL for Uint8List parameters.APIModuleHttpProxy.doRequest: converts Uint8List to Data URL (through Json.toJson).Allow source samples with url(path/to/file.txt), that will be read from a local file.
EntityResolutionRules.populateFromSource:
url(path/to/file.txt), that will be read from a local file.- Clean code.
DBMemorySQLAdapter, DBMemoryObjectAdapter, DBPostgreSQLAdapter DBMySQLAdapter:
DBMemorySQLAdapter, DBMemoryObjectAdapter, DBPostgreSQLAdapter DBMySQLAdapter:
toString: show instanceID.SQLGenerator:
Renamed MemorySQLAdapter to DBMemorySQLAdapter.
MemorySQLAdapter to DBMemorySQLAdapter.MemoryObjectAdapter to DBMemoryObjectAdapter.SQLAdapter to DBSQLAdapter.
SQLEntityRepository to DBSQLEntityRepository.SQLEntityRepositoryProvider to DBSQLEntityRepositoryProvider.MySQLAdapter to DBMySQLAdapter.PostgreSQLAdapter to DBPostgreSQLAdapter.bones_api_adapter_mysql.dart to bones_api_db_mysql.dart.bones_api_adapter_postgre.dart to bones_api_db_postgre.dart.lib/src/*.dart files.Fix resolution of EntityRepository when the same instance is returned by multiple providers.
EntityRepository when the same instance is returned by multiple providers.selectByID with null parameters and null ID.List of entities.A field value based on the current Zone.
ZoneField:
Zone.Transaction.executingTransaction and
allow multiple simultaneous Transactions.APIRouteBuilder:
Decimal and bytes).MemoryObjectAdapter: allow storage of objects without relationships.DBRelationalAdapter:
DBAdapter and SQLAdapter to have an intermediate DBRelationalAdapter.Transaction:
Transaction.TransactionOperationSubTransaction, to wrap sub transactions as an operation
of the parent transaction (used when multiple DBAdapters are used in a Transaction).Fix parameter --lib when respawning for Hot Reload.
bin/bones_api.dart:
--lib when respawning for Hot Reload.SQLDialect for better handling of syntax variations.SQLAdapter:
SQLDialect:
sqlElementQuote, sqlAcceptsOutputSyntax, sqlAcceptsReturningSyntax, sqlAcceptsTemporaryTableForReturning,
sqlAcceptsInsertDefaultValues, sqlAcceptsInsertIgnore, sqlAcceptsInsertOnConflict.SQLGenerator: allow VARCHAR PRIMARY KEY.EntityHandler:
EntityCache interaction issues:
Json.fromJson were wrongly clearing the EntityCache.EntityCache.allowEntityFetch.APIPayload (APIRequest, APIResponse):
payloadMimeType from String to MimeType.populateFromSource: added parameter workingPath.
APIConfig:
sourceParentPath.EntityRepositoryProvider:
populateFromSource: added parameter workingPath.DBAdapter and SQLAdapter:
workingPath.APIPlatform:
resolveFilePath: added parameter parentPath.bin/bones_api.dart:
inspect.lib/src/template/bones_api_template.tar.gz.Fix declaration for PostgreSQLAdapter and MySQLAdapter.
SQLAdapterCapability:
PostgreSQLAdapter and MySQLAdapter.Add missing transaction parameters.
APIRepository:
transaction parameters.Transaction:
executeOrError.APIResponse:
stackTrace.APIRouteHandler:
MapAsCacheExtension.generateTables: fix, to avoid generation if capability.tableSQL is false.
SQLAdapter:
capability.tableSQL is false.getTableRelationshipReference: better resolution when an entity has multiple List fields referencing the same entity/table.
TableScheme:
getTableRelationshipReference:
better resolution when an entity has multiple List fields referencing the same entity/table.Fix synchronization of final return for long transactions.
Transaction:
SQLAdapterException and DBAdapterException for better exception/error handling:
MemorySQLAdapterException.PostgreSQLAdapterException.MySQLAdapterException.FieldNameMapper.Fix resolution of table columns to entity fields when resolving sub-entities.
Fix delete constraint for tables without referenced fields.
MemorySQLAdapter:
APIRoot:
getByType.close (removes from available APIRoot instances).stop now also closes the APIRoot.APIServer:
stop now also closes the APIRoot.EntityRepositoryProvider:
getEntityRepositorygetEntityRepositoryByType.EntityHandler:
getEntityHandlerByType and getEntityRepositoryByType.EntityHandlerProvider:
getEntityHandlerByType and getEntityRepositoryByType.clearPool:
clearPool now also closes/disposes all elements in the pool.keyFieldToSQL: fix resolution of class field to table column name.
ConditionSQLEncoder:
keyFieldToSQL: fix resolution of class field to table column name.resolveFieldName.EntityStorage:
tryDeleteEntity and tryDeleteByID.MemorySQLAdapter now check references constraint before delete.PostgreSQLAdapter: improved connection retry.tryCallMapped and tryCall utils.Added option generateTables: will automatically generate the tables when initialized.
SQLAdapter:
generateTables: will automatically generate the tables when initialized.PostgreSQLAdapter:
MemorySQLAdapter: check for unique fields.
MemorySQLAdapter: check for unique fields.PostgreSQLAdapter and MySQLAdapter: handles unique field errors as EntityFieldInvalid.EntityFieldInvalid: improved error information (added tableName and parentError).EntityHandler: Fix validateFieldValue for sub-entities.
EntityHandler: Fix validateFieldValue for sub-entities.Generate CREATE TABLE SQL with unique constraint (from EntityField).
CREATE TABLE SQL with unique constraint (from EntityField).Generate CREATE TABLE SQL using EntityField information.
CREATE TABLE SQL using EntityField information.Add EntityField: annotation to inform if a field is hidden, unique and its limits (minimum,maximum).
EntityField: annotation to inform if a field is hidden, unique and its limits (minimum,maximum).EntityStorage: now checks entity fields validity (EntityField).Split bones_api_entity_adapter.dart into bones_api_entity_adapter_sql.dart.
bones_api_entity_adapter.dart into bones_api_entity_adapter_sql.dart.PostgreSQLAdapter:
MySQLAdapter:
SQLGenerator:
generateCreateTableSQL:
ifNotExists and sortColumns.generateFullCreateTableSQLs: added parameters withDate, ifNotExists and sortColumns.SQLAdapter tests:
generateFullCreateTableSQLs (MySQL and PostgreSQL).Added SQLBuilder that is used to generate the entities CREATE TABLE SQLs.
SQLBuilder that is used to generate the entities CREATE TABLE SQLs.SQLGenerator that is capable to generate entities tables and relationships SQLs.SQLAdapter and SQLAdapterCapability into DBAdapterCapability and DBAdapter.SQLAdapter:
generateCreateTableSQLs, generateFullCreateTableSQLs, generateEntityRepositoresCreateTableSQLs.DBEntityRepositoryProvider and SQLEntityRepositoryProvider.- sdk: '>=2.15.0 <3.0.0' - petitparser: ^5.0.0 - hotreloader: ^3.0.5
Now starts creating a MemorySQLAdapter.
SQLAdapter:
extractSQLs.APITestConfigDBMemory:
MemorySQLAdapter.APITestConfigDockerPostgreSQL:
listTables implementation.APITestConfigDockerMySQL:
listTables implementation.apiInfo now also returns APIRouteInfo for method specific routes.
APIRootStarter:
isStopped.APIRouteBuilder:
apiInfo now also returns APIRouteInfo for method specific routes.APITestConfig:
resolveSupported, isSupported, isUnsupported and unsupportedReason.APITestConfigDockerDBSQL: adding SQL methods for DB containers with SQL support.APITestConfig implementations.LoggerHandler:
logToConsole.cancelLogToConsole.bones_api_test_vm.dart.
resolveFreePort (now uses a random approach to avoid collision between parallel tests).- Fix library names: - bones_api_test - bones_api_test.mysql. - bones_api_test.postgres.
bones_api_testbones_api_test.mysql.bones_api_test.postgres.EntityAccessor: added nameSimplified.
EntityAccessor: added nameSimplified.LoggerHandler:
logToConsole: avoid multiple listeners to the root logger.APITestConfigDocker: remove unnecessary call to logToConsole().bones_api_root_starter.dart.Added APITestConfig: an APIRoot test helper.
APIRootStarter helper.APITestConfig: an APIRoot test helper.APITestConfigDocker, a base class for Docker database containers:
APITestConfigDockerMySQL (MySQL container)APITestConfigDockerPostgreSQL (PostgreSQL container)APIConfig: now supports variables (%VAR_NAME%).SQLAdapterCapability: added capability tableSQL.SQLAdapter:
populateTables and populateSource (previously present only for MemorySQLAdapter).populateTables and executeTableSQL methods.generateInsertSQL: fix issue when all values are null.MySQLAdapter and PostgreSQLAdapter:
MemorySQLAdapter:
populateFromSource moved to EntityRepositoryProvider extension.APIPlatform:
getProperty: read a property from an "environment variable" (VM) or window.location.href (Browser).APISession and APISessionSet: moved to bones_api_session.dart.caseInsensitive to caseSensitive to follow RegExp parameters naming style.bones_api_utils.dart in multiple utils files:
bones_api_utils_collections.dartbones_api_utils_httpclient.dartbones_api_utils_json.dartbones_api_utils_timedmap.dartConsolidating tables after a transaction is finished, removing unnecessary history data.
MemorySQLAdapter:
- mysql1: ^0.20.0 - postgres: ^2.4.5 - lints: ^2.0.0 - coverage: ^1.3.2
Using MapHistory for internal representation, to allow rollback of transactions.
MemorySQLAdapter:
MapHistory for internal representation, to allow rollback of transactions.SQLAdapterCapability:
transactionAbort: true (rollback support).SQLAdapter:
Docker daemon and skipping of tests group when Docker is not running.castListNullable and castIterableNullable.
EntityHandler:
castListNullable and castIterableNullable.castList:
better exception message when an element is null.Condition:
Better resolution and matching of JSON collections and entities.KeyCondition:
_resolveValueEntityHandler for List entities types.MemorySQLAdapter:
_normalizeEntityJSON.Ensure that the stored data has only valid JSON values for the whole entity tree.
MemorySQLAdapter:
EntityRepository:
isOfEntityType.Added deleteEntity, deleteByID and deleteEntityCascade.
EntityRepository:
deleteEntity, deleteByID and deleteEntityCascade.EntityHandler:
isValidType to isValidEntityType.- EntitySource: - Added selectFirstByQuery. - Clean code.
EntitySource:
selectFirstByQuery.Initializable.initialize: Now returns a InitializationResult, allow improved results and dependencies in the result.
Initializable:
Initializable.initialize:
Now returns a InitializationResult, allow improved results and dependencies in the result.Moved code to bones_api_initializable.dart.
Initializable:
bones_api_initializable.dart.storeAllFromJson: ensure that operations are executed sequentially.
EntityRepositoryProvider:
storeAllFromJson: ensure that operations are executed sequentially.Improve populate of entities using ID as reference to sub entities fields.
EntitySource:
existsID.SQLAdapter:
MemorySQLAdapter:
count with a condition.sSmall path for the last version.
Fixed when comparing entities and IDs.
MemorySQLAdapter:
Now allows async initializations.
Initializable:
MethodReflectionExtension:
isAPIMethod now accepts FutureOr<APIResponse>.EntityRepository:
selectAll.Improve resolution of APICredential username.
APIServer:
APICredential username.Improved resolution of request payload.
APIServer:
decodeQueryStringParameters, for full decoding of query string with single and multiple parameters.Added credential to constructors.
APIRoot:
callAuthenticate.APIRequest:
credential to constructors.ignoreParametersTypes: added type APICredential (should exist only in the implementation).
APIModuleProxy:
APICredential (should exist only in the implementation).- reflection_factory: ^1.0.29
- Improved GitHub CI. - Added browser tests. - mercury_client: ^2.1.5 - swiss_knife: ^3.1.0 - data_serializer: ^1.0.7
MemorySQLAdapter: fix nextID when entities are stored with pre-defined IDs.
MemorySQLAdapter: fix nextID when entities are stored with pre-defined IDs.EntityHandler: Rename idFieldsName to idFieldName.Compatibility with JsonFieldAlias.
ClassReflectionEntityHandler:
createFromMap.JsonFieldAlias.Your coding agent can read these notes before it upgrades. Set up the MCP server →