NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #3198 most downloaded on pub.dev
Layrz API models for Dart/Flutter. This package contains the models used by the Layrz API.
Last release 8 days ago
29 Sep 2026
Ships on a steady schedule
a new release about every 9 days
Nearly every release is documented
notes for 59 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
3 years old
562 releases · first in 2023
One column per quarter.
Updated Gql to now auto-include name from the next field in the query or mutation if no name is provided, ensuring that all GraphQL operations have a
Gql to now auto-include name from the next field in the query or mutation if no name is provided, ensuring that all GraphQL operations have a valid name for better debugging and logging.New GqlVariableType.enum_() factory for GraphQL enum variables, allowing type-safe enum variable declarations in queries and mutations.
GqlVariableType.enum_() factory for GraphQL enum variables, allowing type-safe enum variable declarations in queries and mutations.RegisteredApp.load() to fix the platform and technology fields to be their respective enums AppPlatform and AppTechnology instead of plain strings, ensuring proper type safety and deserialization.Added API connector for Geofence with full GraphQL support (fetch, fetchAll, save, delete, exportMany).
Geofence with full GraphQL support (fetch, fetchAll, save, delete, exportMany).GeofenceInput with full GraphQL support (save).Fixed an issue on AvailableApp.fetchAll() where the apiToken variable was not being passed to the GraphQL query, resulting in an empty response. The q
AvailableApp.fetchAll() where the apiToken variable was not being passed to the GraphQL query, resulting in an empty response. The query now correctly includes the apiToken argument.Corrected Fragment names on AppFont.fragment and InstanceDns.fragment to match the GraphQL schema types (AppFont and InstanceDns) instead of the previ
AppFont.fragment and InstanceDns.fragment to match the GraphQL schema types (AppFont and InstanceDns) instead of the previous incorrect names (FontInformation and DnsConfiguration).Fixed an issue with the API connector RegisteredApp.fechAll
RegisteredApp.fechAllLayrzConnector now exposes typed query() and mutate() methods returning a decoded ApiResponse with status, errors and result
LayrzConnector now exposes typed query() and mutate() methods returning a decoded ApiResponse with status, errors and resultRegisteredApp.registerWithoutCustomization(), registerWithCustomization() and edit() now return (ApiStatus, Map<String, dynamic>?, RegisteredApp?) records with the operation status, field errors and decoded resultAppInstance, PushDevice and AvailableApp API callers migrated to the typed connector APIregisterWithCustomization() reporting INTERNAL_ERROR on successful responsesAdded API connectors for Country, RegisteredApp and AvailableApp
Country, RegisteredApp and AvailableAppAdd new value REMITTANCE_SALE in enum AtsPurchaseOrderCategoriesEntity
REMITTANCE_SALE in enum AtsPurchaseOrderCategoriesEntityAdd PushDevice model with validate() API caller to check device registration status on the backend and retrieve associated operation IDs
PushDevice model with validate() API caller to check device registration status on the backend and retrieve associated operation IDsPushDevice.register() to register a new push device for an app and retrieve the created device IDPushDevice.bindOperations() to bind or unbind a list of operations to a push devicePushDevice.deregister() to deregister a push device by its IDFix Operation GraphQL fragment: query accountId instead of externalAccountId, remove unexposed emailTemplateId, align access sub-selection with Access
accountId instead of externalAccountId, remove unexposed emailTemplateId, align access sub-selection with AccessPermission schema (id, read, write, manage, objectId, userId, module)appId argument to Operation.fetch() to filter operations by appOperation.fetchAll() result selection to id, name, operationTypeonResponse only on error responses across RegisteredApp and Operation API callersOperationInput.save() result as a single objectFixes on Registered Apps import modules
Expanded Operation.gqlFragment to cover the full operation configuration (webhook, email, SMS/Twilio, push, in-app fields) so Operation.fetch/fetchAll
Operation.gqlFragment to cover the full operation configuration (webhook, email, SMS/Twilio, push, in-app fields) so Operation.fetch/fetchAll return complete data.ApiStatus.fromJson() now handles both underscore-separated (e.g., 'NOT_FOUND', 'INTERNAL_ERROR') and legacy squashed (e.g., 'NOTFOUND', 'INTERNALERROR') formats through case-insensitive normalization.App management API callers on RegisteredApp (fetch, setPushSecrets, access grant/revoke, asset/device import), AppInstance (deprecate/migrate/request)…
Made performedBy nullable (User?) in MappitRouteLinkingHistory. When an employee is removed, the relation is soft-deleted and the backend sends perfor
performedBy nullable (User?) in MappitRouteLinkingHistory. When an employee is removed, the relation is soft-deleted and the backend sends performedBy: null for historical records, while performedById still holds the plain ID. The previous non-nullable declaration crashed fromJson with type 'Null' is not a subtype of type 'Map<String, dynamic>'. This aligns performedBy with the already-nullable currentSeller field.Added constant.number value to AtsStreamExitStructureType enum, a sibling of constant for ATAK outbound structure entries whose value should be sent a
constant.number value to AtsStreamExitStructureType enum, a sibling of constant for ATAK outbound structure entries whose value should be sent as a real JSON number instead of a string.Added ActionType.zigbeeChange (ZIGBEE_CHANGE) plus the ActionZigbeeSetting, ActionZigbeeSettings and ActionZigbeeSettingsInput models, with a new zigb
ActionType.zigbeeChange (ZIGBEE_CHANGE) plus the ActionZigbeeSetting, ActionZigbeeSettings and ActionZigbeeSettingsInput models, with a new zigbeeSettings field on Action and ActionInput.Action.fetch, Action.fetchAll, Action.deleteMultiple and ActionInput.save, following the GqlQuery builder pattern.Device.fetchZigbeeCapable, returning the devices that have Zigbee exposes bound to them (id, name, ident and exposes).Action, Device and User callers no longer send the apiToken GraphQL argument — authentication relies on the Authorization: LayrzToken header; requires a layrz-api deployment with the dual-auth actions, devices and users endpoints.Changed vgNavio value type from int to String in CaclTFBDetails and CaclTFBDetailsInput models
int to String in CaclTFBDetails and CaclTFBDetailsInput modelsAdded AssetWidget, AssetWidgetConfig, and AssetWidgetRange models (with matching input variants) plus a read-only widgets field on Asset, backing the
AssetWidget, AssetWidgetConfig, and AssetWidgetRange models (with matching input variants) plus a read-only widgets field on Asset, backing the per-asset live-data widgets feature. Writes go through the dedicated updateAssetWidgets mutation, not the asset model.NUMERIC and LINE_CHART values to the RenderWidget enum.LayrzConnector now requires an apiToken and injects an Authorization: LayrzToken {token} header on every request and subscription, migrating authentication off the GraphQL apiToken variable.The icon field now falls back to solarOutlineQuestionSquare when null. This is a breaking change because any workspace that had a null icon will now r…
WorkspaceInput.fromJson. Previously, workspaces with no icon set would crash with a Null check operator used on a null value error during JSON deserialization. The icon field now falls back to solarOutlineQuestionSquare when null. This is a breaking change because any workspace that had a null icon will now render with the default icon instead of its previously expected icon — verify your workspace icon assignments.Added numericSlider, enumSelector, textCommand and rawValue values to RenderWidget enum.
numericSlider, enumSelector, textCommand and rawValue values to RenderWidget enum.receptionAssetId (String?) field to AtsPurchaseOrder model.Added StockClosingGeneralInfo new model
StockClosingGeneralInfo new modelStockClosing, StockClosingInput, StockClosingTank and StockClosingTankInput with new values openingBalanceAmbient, totalEntriesAmbient, totalWithdrawalsAmbient and closingBalanceAmbientAdded json and json.array values to AtsStreamExitStructureType enum, allowing ATAK outbound services to nest a group of structure fields into a single
json and json.array values to AtsStreamExitStructureType enum, allowing ATAK outbound services to nest a group of structure fields into a single JSON object or a single-element JSON array.attendant.id and attendant.user.id values to AtsStreamExitStructureType enum.source (String?) and nested (List<OutboundStructureInput>/List<OutboundStructure>) fields to OutboundStructureInput and OutboundStructure models, to support the new json/json.array structure types.Fixed issue on Token.create where duration variable was being sent as int instead of Duration type, causing GraphQL validation errors. Now, the durati
Token.create where duration variable was being sent as int instead of Duration type, causing GraphQL validation errors. Now, the duration variable is correctly sent as a Duration type in seconds.Added finalStop value in CaclTFBDetails model
finalStop value in CaclTFBDetails modelAtsCaclAsset modelRemoved finalStopBoard and added finalStop as enum value in CaclTFBDetailsInput model
finalStopBoard and added finalStop as enum value in CaclTFBDetailsInput modelfalse to boolean values in CaclTFBDetailsInput modelBumped minimum SDK constraints to Dart >=3.12.0 and Flutter >=3.44.0
>=3.12.0 and Flutter >=3.44.0layrz_icons dependency to ^1.1.0mobilePopupNotification icon in OperationType to solarOutlineSmartphoneN2Added duration field (Duration?) to MaskPoint and MaskPointInput models, with @DurationConverter() for JSON serialization/deserialization.
duration field (Duration?) to MaskPoint and MaskPointInput models, with @DurationConverter() for JSON serialization/deserialization.Added new value SALE_FROM_THIRD_PARTY_TANK in AtsPurchaseOrderCategoriesEntity enum
SALE_FROM_THIRD_PARTY_TANK in AtsPurchaseOrderCategoriesEntity enumAdded btInscription and vgNavio values in CaclTFBDetails and CaclTFBDetailsInput models
btInscription and vgNavio values in CaclTFBDetails and CaclTFBDetailsInput modelsAdded new models CaclTFBDetails and CaclTFBDetailsInput
CaclTFBDetails and CaclTFBDetailsInputtfbdetails to CaclEntity and CaclInput modelsChanged MessageOfTheDay's id, name and title fields to be non-nullable, and required for declaration.
MessageOfTheDay's id, name and title fields to be non-nullable, and required for declaration.Added SensorDataType enum (INT, FLOAT, STR, BOOL) to the sensors module.
SensorDataType enum (INT, FLOAT, STR, BOOL) to the sensors module.Added MessageOfTheDay and MessageOfTheDayInput models to the brickhouse module.
MessageOfTheDay and MessageOfTheDayInput models to the brickhouse module.Added signedAt value in CaclEntity model
signedAt value in CaclEntity modelAdded ATS_SUPERVISORIO_ALLOW_CLOSE_RAFT_OPERATION value in ReferenceCategory enum
ATS_SUPERVISORIO_ALLOW_CLOSE_RAFT_OPERATION value in ReferenceCategory enumAdded AtsStreamModel and AtsStreamExitStructureType enums
AtsStreamModel and AtsStreamExitStructureType enumsatsModel to OutboundService and OutboundServiceInput modelsAdded exposes field (List ?) to the Device model, flattening Zigbee exposes across the device's bound Zigbee device(s).
exposes field (List<ZigbeeDeviceExpose>?) to the Device model, flattening Zigbee exposes across the device's bound Zigbee device(s).Added widget field (RenderWidget?) to ZigbeeDeviceExpose for specifying the UI widget type associated with an exposed property.
widget field (RenderWidget?) to ZigbeeDeviceExpose for specifying the UI widget type associated with an exposed property.Updated AtsFuelSubType.getColor() colors to match ATS tank product reclassification:
AtsFuelSubType.getColor() colors to match ATS tank product reclassification:
dieselS10A, dieselS10ComunB, dieselS10BAditivado) changed to #F0E1B4.ethanol, ethanolAditivado) changed to #2274D7.Added tankAsset field to CaclEntity model
tankAsset field to CaclEntity modelAdded ZigbeeDeviceExpose freezed class with fields id, name, type, access, params, and updatedAt.
ZigbeeDeviceExpose freezed class with fields id, name, type, access, params, and updatedAt.exposes field (List<ZigbeeDeviceExpose>?) to ZigbeeDevice for storing device capability exposes.alias field (String?) to ZigbeeParameter and ZigbeeParameterInput for optional parameter aliasing.access field (int, default 3) to ZigbeeParameter for access control (bit flags: read=1, write=2).access field (int?) to ZigbeeParameterInput for mutable form editing.Added ZigbeeDevice freezed class with fields id, ieeeAddress, manufacturer, model, lastSeen, bindedDeviceId, and zoneId.
ZigbeeDevice freezed class with fields id, ieeeAddress, manufacturer, model, lastSeen, bindedDeviceId, and zoneId.zigbeeDevices field (List<ZigbeeDevice>?) to Device for hub-scoped Zigbee device hydration alongside existing peripherals.Added gasValue (GAS_VALUE) to RenderWidget enum for gas detection value display.
gasValue (GAS_VALUE) to RenderWidget enum for gas detection value display.Added ZigbeeDataType enum (BOOLEAN, NUMBER, STRING, ENUM) mirroring connectivity/constants/zigbee_data_type.py.
ZigbeeDataType enum (BOOLEAN, NUMBER, STRING, ENUM) mirroring connectivity/constants/zigbee_data_type.py.ZigbeeParameter (Freezed) and ZigbeeParameterInput (@unfreezed) models with fields: id, name, dataType, widget, extra.zigbeeParameters field (List<ZigbeeParameter> / List<ZigbeeParameterInput>) to both Model and ModelInput.widget field (List<RenderWidget>) to ModelInput with @JsonKey(name: 'widgetRender').Added createdByUserId field String to CaclEntity to expose the id of the user who created the cacl form.
createdByUserId field String to CaclEntity to expose the id of the user who created the cacl form.createdByUser field User to CaclEntity to expose the user who created the cacl form.Added new values sampleTemperature and tankTemperature in TankMeasurement models, and deprecated temperature value
executedAt in ManifestInput and Manifest modelssampleTemperature and tankTemperature in TankMeasurement models, and deprecated temperature valueDeprecated ordersIds field in AtsReceptionInput in favor of purchaseOrderIds.
purchaseOrderIds field (List<String>?) to AtsReceptionInput to align with the GraphQL ReceptionInput schema.ordersIds field in AtsReceptionInput in favor of purchaseOrderIds.Added ReferenceCategory.atsShowOnlyLastExit (ATS_SHOW_ONLY_LAST_EXIT) to flag pump assets whose exit history should be limited to the most recent reco
ReferenceCategory.atsShowOnlyLastExit (ATS_SHOW_ONLY_LAST_EXIT) to flag pump assets whose exit history should be limited to the most recent record.Fixed RenderWidget.magnet enum value: corrected @JsonValue from 'MAGNET_SENSOR' to 'MAGNET' to match the backend Widget enum.
RenderWidget.magnet enum value: corrected @JsonValue from 'MAGNET_SENSOR' to 'MAGNET' to match the backend Widget enum.Added originalBuyerAsset field (Asset?) to AtsPurchaseOrder to expose the original buyer asset linked to the purchase order.
originalBuyerAsset field (Asset?) to AtsPurchaseOrder to expose the original buyer asset linked to the purchase order.Added new widgets on RenderWidget enum
RenderWidget enumChanged destinyInformation field in AtsLoadingParamsFormInput from nullable List ? to non-nullable List with @Default([]) to ensure it always defaults
destinyInformation field in AtsLoadingParamsFormInput from nullable List<AtsDestinyInformationInput>? to non-nullable List<AtsDestinyInformationInput> with @Default([]) to ensure it always defaults to an empty list.Made position field nullable (InboundPositionStructure?) in InboundStructure and InboundStructureInput to support services without a position structur
position field nullable (InboundPositionStructure?) in InboundStructure and InboundStructureInput to support services without a position structure.DynamicMapConverter and DynamicMapConverterNullable converters to safely deserialize Map<dynamic, dynamic> (e.g. Dart literal {}) into Map<String, dynamic>.@DynamicMapConverterNullable() to InboundService.credentials and @DynamicMapConverter() to InboundServiceInput.credentials to fix deserialization failures when credentials arrive as an empty map literal.Adjustments on Model, now widget is List instead of plain RenderWidget.
Model, now widget is List<RenderWidget> instead of plain RenderWidget.Added new fields on InboundProtocol and Model to support Zigbee and ConfIoT related configurations
InboundProtocol and Model to support Zigbee and ConfIoT related configurationsAdded new value NFE_CHANGED in AtsPurchaseOrderStatus enum
NFE_CHANGED in AtsPurchaseOrderStatus enumcheckInAt in AtsOperation modelFixed casesMonitorConfig type in Workspace model to be a list of nullable CaseMonitorCard? instead of non-nullable CaseMonitorCard.
casesMonitorConfig type in Workspace model to be a list of nullable CaseMonitorCard? instead of non-nullable CaseMonitorCard.AtsMdfe modelmdfeId, mdfe and mdfes values in AtsOperation modelStockClosingInput modelATS_INVOICE_SWAP value in ReferenceCategory enumUpdated openingBalance to openingBalance20 in StockClosingTank model
openingBalance to openingBalance20 in StockClosingTank modeltotalEntries to totalEntries20 in StockClosingTank modeltotalWithdrawals to totalWithdrawals20 in StockClosingTank modelclosingBalance to closingBalance20 in StockClosingTank modelRefactor StockClosing and StockClosingTank models
StockClosing and StockClosingTank modelstanks to closingDetails value in StockClosingInputYour coding agent can read these notes before it upgrades. Set up the MCP server →