NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #4331 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 4 days ago
04 Oct 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
355 releases · first in 2021
🔨 improve payload handling in resolveBody and resolveBodySync
refactor(api):
UNAUTHORIZED, BAD_REQUEST: Allow error as payload in response generation.swiss_knife: ^3.2.3
yaml: ^3.1.3
stream_channel: ^2.1.3
_callZoned: allow an APIResponse to be thrown as response.
APIRoot:
_callZoned: allow an APIResponse to be thrown as response.One column per quarter.
createContextZone: added parameter zoneValues.
ZoneField:
createContextZone: added parameter zoneValues.createSafeContextZone:
zoneSpecification and zoneValueshandleUncaughtError to named parameter.APIRoot:
_callZoned:
handleUncaughtError for every Zone created
through currentAPIRequest.createSafeContextZone. Now using a single ZoneSpecification instance.currentAPIRequest.disposeContextZone(callZone) is always called.async_extension: ^1.2.14
test: ^1.25.14
✨♻️ Add Time operators for addition + and subtraction -.
✨♻️ Add Time operators for addition + and subtraction -.
New DurationToTimeExtension: Duration.toTime()
async_extension: ^1.2.13
reflection_factory: ^2.4.8
build_runner: ^2.4.14
test: ^1.25.13
- map_history: ^1.0.6 - shelf_letsencrypt: ^2.0.1
Added createSafeContextZone (handles Uncaught Errors).
ZoneField:
_zones: optimize using Queue.createSafeContextZone (handles Uncaught Errors).APIRoot
_callZoned: use currentAPIRequest.createSafeContextZone and avoid Uncaught Errors that can quit a server.APIServerWorker:
_startLetsEncrypt: allow multiple domains.letsEncrypt.startServer:
checkCertificate: letsEncryptProduction,sdk: '>=3.5.0 <4.0.0'
shelf_letsencrypt: ^2.0.0
map_history: ^1.0.4
gcloud: ^0.8.18
lints: ^4.0.0
dependency_validator: ^4.1.2
test: ^1.25.12
coverage: ^1.11.1
build_runner: ^2.4.13
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
- reflection_factory: ^2.4.7
HTMLInput._resolveInput: ensure that DataTime values are UTC.
HTMLInput._resolveInput: ensure that DataTime values are UTC.
APIDBModule:
_addScriptFixDateTime and _fixParametersDateTime (used by insert)._writeInputTable: id with link to the select route.select:
Added fields postgresPort, maxConnections and logStatement.
APITestConfigDockerDB:
cleanContainer.APITestConfigDockerPostgreSQL:
postgresPort, maxConnections and logStatement.super.cleanContainer.APITestConfigDockerMySQL:
super.cleanContainer.docker_commander: ^2.1.7
- reflection_factory: ^2.4.6
- EntityAccessRules._simplified: - Fix: Added parameter masker.
EntityAccessRules._simplified:
masker.- EntityAccessRuleType: - Added mask. - EntityAccessRules: - Added field masker. - Added getter cached. - Added hasRuleType. - gcloud: ^0.8.17 - cover
EntityAccessRuleType:
mask.EntityAccessRules:
masker.cached.hasRuleType.gcloud: ^0.8.17
coverage: ^1.11.0
- reflection_factory: ^2.4.5 - gcloud: ^0.8.16
onNewAPIToken: added parameter request.
APISecurity:
onNewAPIToken: added parameter request.yaml_writer: ^2.0.1
args: ^2.6.0
logging: ^1.3.0
crypto: ^3.0.6
path: ^1.9.1
coverage: ^1.10.0
refreshAPIToken: after refreshToken and create a new token, populate permissions calling getCredentialPermissions.
APISecurity:
refreshAPIToken: after refreshToken and create a new token, populate permissions calling getCredentialPermissions.gcloud: ^0.8.15
Added copy, isSharedDummy, and ensureNotSharedDummy.
SQL:
copy, isSharedDummy, and ensureNotSharedDummy.generateInsertRelationshipSQLs: use ensureNotSharedDummy.meta: ^1.16.0
Only use responseType = 'arraybuffer' if the returnType is Uint8List; otherwise, use responseType = 'text'.
APIModuleProxyHttpCaller:
parseResponse.doRequest:
returnType.responseType = 'arraybuffer' if the returnType is Uint8List; otherwise, use responseType = 'text'.HTMLInput:
statistics: ^1.1.3
swiss_knife: ^3.2.2
mercury_client: ^2.2.4
shelf_static: ^1.1.3
gcloud: ^0.8.13
Handle 7 bytes encoding from PostgreSQL.
Time.fromBytes:
removeFromPool: call closePoolElement.
Pool:
removeFromPool: call closePoolElement._catchFromPopulatedPool: call disposePoolElement on invalid elements.
Pool:
_catchFromPopulatedPool: call disposePoolElement on invalid elements.Added disposeInternalHandlers and resolve.
EntityReferenceBase:
disposeInternalHandlers and resolve.coverage: ^1.9.1
- EntityReference: - Fix set for null value.
EntityReference:
set for null value.Optimize _resolveEntityHandler: avoid multiple null resolutions.
EntityReferenceBase:
_resolveEntityHandler: avoid multiple null resolutions._resolveEntity: avoid uncessary call to entityProvider when entity and id are null.resolveTypeName: avoid type.toString()._isInvalidEntityType: avoid multiple == calls.data_serializer: ^1.2.1
crypto: ^3.0.5
encodeConditionValuesWithOperator: Fix encoding for null values to use IS NULL and IS NOT NULL.
ConditionSQLEncoder:
encodeConditionValuesWithOperator: Fix encoding for null values to use IS NULL and IS NOT NULL.statistics: ^1.1.2
isJsonResponse: Improve logic for determining JSON response types.
APIModuleProxyHttpCaller:
isJsonResponse: Improve logic for determining JSON response types.isByteArrayResponse: Improve logic for determining raw bytes response types.swiss_knife: ^3.2.1
Added fieldsWithTypeAndAnnotations.
EntityHandler:
fieldsEntityAnnotations.fieldsWithTypeAndAnnotations.fieldsWithEntityReference, fieldsWithEntityReferenceList: ensure unmodifiable.fieldsWithTypeListEntityOrReference: do not return hidden fields (@EntityField.hidden()).sdk: '>=3.4.0 <4.0.0'
data_serializer: ^1.2.0
reflection_factory: ^2.4.4
statistics: ^1.1.1
collection: ^1.19.0
shelf: ^1.4.2
http: ^1.2.2
test: ^1.25.8
coverage: ^1.9.0
resolveRequestCredentials: call validateUnknownToken to allow external tokens.
APISecurity:
resolveRequestCredentials: call validateUnknownToken to allow external tokens.LoggerHandler: optimize logBuffered.
LoggerHandler: optimize logBuffered.APIToken, APICredential: added field refreshToken.
APIToken, APICredential: added field refreshToken.
APISecurity:
onNewAPIToken, validateUnknownToken, validateRefreshToken.shared_map: ^1.1.9
reflection_factory: ^2.4.3
Optimize _getEntityHandlerImpl.
EntityHandlerProvider:
_getEntityHandlerImpl.ClassReflectionEntityHandler:
copy.DBEntityRepository:
hasReferencedEntities.EntityResolutionRules:
isAnyEagerEntityType, isAnyEagerEntityTypeInfo, isAnyLazyEntityType, isAnyLazyEntityTypeInfo.EntityReference
fromEntityInstantiator and hasEntity.New EntityInstantiator and EntityInstantiatorHandler.
EntityHandler:
getIDFromMap and toEntitiesMapByIdMap.EntityRepository: added getEntityMapID.
Time: set all fields final.
APIResponse: added metric API-response-json.
reflection_factory: ^2.4.2
_selectEntries: add support for limit.
DBSQLMemoryAdapter:
_selectEntries: add support for limit._resolveValueAsUInt8List: handle hex: and base64: prefixed data.
EntityHandler:
_resolveValueAsUInt8List: handle hex: and base64: prefixed data.EntitySource, EntityRepository:
EntityHandler:
getIDs.EntitySource, EntityRepository:
existIDs, selectIDsBy and selectIDsByQuery.DBRelationalAdapter:
parseIDs.New IterableEntityReferenceExtension and IterableEntityReferenceListExtension.
New IterableEntityReferenceExtension and IterableEntityReferenceListExtension.
EntityReference: added idAsInt and idNotNullAsInt.
EntityReferenceList: added idsAsInt and idsNotNullAsInt.
- TimedMap: - Added keyTimeoutChecker
TimedMap:
- MapAsCacheExtension: - Added getIfCached. - Exposed checkCachedEntry.
MapAsCacheExtension:
getIfCached.checkCachedEntry.New MapOfCachesExtension and RecordExtension.
New MapOfCachesExtension and RecordExtension.
reflection_factory: ^2.4.0
docker_commander: ^2.1.6
meta: ^1.15.0
archive: ^3.5.1
build_runner: ^2.4.10
test: ^1.25.5
coverage: ^1.8.0
Fix _parseConstraint for enums with single values.
DBPostgreSQLAdapter:
_parseConstraint for enums with single values.Added contextKeyPosition with the parameters position of the key.
ConditionParameter:
contextKeyPosition with the parameters position of the key.getValue: improve key and index resolution.contextPosition: the index is now resolved using all parameters, not only the positional ones.
baz will resolve contextPosition as 2 and not 1: foo == ? || bar == ?:x || baz == ?args: ^2.5.0
meta: ^1.14.0
googleapis_auth: ^1.6.0
test: ^1.25.3
Removed deprecated APIModuleHttpProxy (use APIModuleProxyHttpCaller).
APIModuleProxyTargetResolver: added parameter errorHandler.
APIModuleProxyCaller.resolveTarget: added parameter errorHandler.
APIModuleProxyDirectCaller and APIModuleProxyHttpCaller:
errorHandler.defaultErrorHandler.APIModuleProxyCallerListener
defaultErrorHandler.APIModuleProxyCallerResponseError:
request, responseStatus, module, methodName and parameters.Removed deprecated APIModuleHttpProxy (use APIModuleProxyHttpCaller).
APIToken: fix the constructor initialization of field duration.
APIToken: fix the constructor initialization of field duration.DBSQLMemoryAdapter: optimize _selectEntries for Conditions that only depends on IDs.
Condition: added isIDCondition
DBSQLMemoryAdapter: optimize _selectEntries for Conditions that only depends on IDs.
Added isLoggingAll and isLoggingDB.
LoggerHandler:
isLoggingAll and isLoggingDB.parent, rootLogger and root.TableScheme: optimize getFieldReferencedTable.
TableScheme: optimize getFieldReferencedTable.
DBSQLMemoryAdapter:
_resolveEntityMap and _resolveEntityFieldRelationshipTable.APIServerConfig: added logQueue.
EntityRepository:
_storeAllFromJsonImpl: optimize loading of entities from JSON (split in blocks of 100 entries per store).- reflection_factory: ^2.3.4
getFields: call reflection.getJsonFieldsVisibleValues (avoid issues with JsonHidden.fields).
ClassReflectionEntityHandler:
getFields: call reflection.getJsonFieldsVisibleValues (avoid issues with JsonHidden.fields).reflection_factory: ^2.3.3
Added useLogQueue, disableLogQueue and enableLogQueue.
LoggerHandler:
useLogQueue, disableLogQueue and enableLogQueue.New APIModuleProxyCallerError:
APIModuleProxyCallerResponseError.APIModuleProxyDirectCaller:
APIModuleProxyCallerResponseError for APIResponses with ERROR status.APIModuleProxyHttpCaller:
APIModuleProxyCallerResponseError for error HttpResponses.Optimize DBAdapter and DBEntityRepository.
async_extension: ^1.2.12
mercury_client: ^2.2.2
async_extension: ^1.2.9
googleapis_auth: ^1.5.1
build_runner: ^2.4.9
EntityHandler: added normalizeID and normalizeIDs.
EntityHandler: added normalizeID and normalizeIDs.
EntityReference.fromID: use _normalizeID.
EntityReferenceList.fromIDs: use _normalizeIDs.
Added field development and serverResponseDelay.
APIServerConfig:
development and serverResponseDelay.server-response-delay.APISecurity:
disposeAuthenticationData.disposeAuthenticationToken.APITokenStore:
removeTokenData.Fix toJsonEncodable to allow rules to be applied to sub-entities.
EntityAccessRules:
toJsonEncodable to allow rules to be applied to sub-entities.APIResponse extension on Future and FutureOr:
payloadAsyncOr.LoggerHandler:
flushMessages: added parameter delay.async_extension: ^1.2.7
reflection_factory: ^2.3.1
postgres: ^2.6.4
googleapis_auth: ^1.5.0
Added idNotNull, idAs and idNotNullAs
EntityReference:
idNotNull, idAs and idNotNullAsEntityReferenceList:
idsAs and idsNotNullAs.LoggerHandler:
flushMessages.APIServer and APIServerWorker:
_startImpl: call flushMessages before return.APIServer: allow return of List as JSON.
APIServer: allow return of List<int> as JSON.Optimize _resolveRelationshipFields.
DBEntityRepository:
_resolveRelationshipFields.LoggerHandlerIO:
printMessage: add a message queue for printing log messages asynchronously.http: ^1.2.1
- statistics: ^1.1.0 - swiss_knife: ^3.2.0 - shared_map: ^1.1.8 - mercury_client: ^2.2.1 - meta: ^1.12.0 - logging: ^1.2.0 - mime: ^1.0.5 - gcloud: ^0
statistics: ^1.1.0
swiss_knife: ^3.2.0
shared_map: ^1.1.8
mercury_client: ^2.2.1
meta: ^1.12.0
logging: ^1.2.0
mime: ^1.0.5
gcloud: ^0.8.12
path: ^1.9.0
archive: ^3.4.10
http: ^1.2.0
build_runner: ^2.4.8
test: ^1.25.2
Your coding agent can read these notes before it upgrades. Set up the MCP server →