layrz_models
Layrz API models for Dart/Flutter. This package contains the models used by the Layrz API.
3.31.1
12K downloads/mo
#2761 most downloaded on pub.dev
goldenm-software/layrz_models
What this package is like to depend on
Last release 2 days ago
21 Aug 2026
Ships on a steady schedule
a new release about every 9 days
Nearly every release is documented
notes for 527 of 529 stable releases
1 version withdrawn
withdrawn after publishing
3 years old
537 releases · first in 2023
207 releases in the last 12 months
see the full history below
Release timeline
537 releases · Jun 2023 to Aug 2026Releases
latest 60 of 537-
3.31.121 Aug 2026Release notes
Open source →📋 Release Notes
This release includes the following changes:
🐛 Bug Fixes
- addBrickhouseUser query name (
7718935by @LuisReyes98) - edit brickhouse user gql name (
d06cd4dby @LuisReyes98) - updates to User gql fragment , and gql brickhouseUsers naming convention (
612414bby @LuisReyes98) - _getGqlQueryName for brickhouseUsers (
ea1569fby @LuisReyes98)
📊 Diff Stats
Metric Count 📄 Files changed 3 🟢 Insertions $\color{green}\textsf{+14}$ 🔴 Deletions $\color{red}\textsf{-19}$
🤖 Auto-generated by changelog workflow
Release notes
Open source →- Updated the User gql fragment, and gql brickhouseUsers naming convention
- addBrickhouseUser query name (
-
3.31.021 Aug 2026Release notes
Open source →📋 Release Notes
This release includes the following changes:
✨ Features
🐛 Bug Fixes
📊 Diff Stats
Metric Count 📄 Files changed 38 🟢 Insertions $\color{green}\textsf{+222}$ 🔴 Deletions $\color{red}\textsf{-249}$
🤖 Auto-generated by changelog workflow
Release notes
Open source →- Fully removal of
layrz_iconsin favor offlutter_material_design_icons layrz_sdkversion dump
- Fully removal of
-
3.30.020 Aug 2026Release notes
Open source →📋 Release Notes
This release includes the following changes:
✨ Features
📊 Diff Stats
Metric Count 📄 Files changed 4 🟢 Insertions $\color{green}\textsf{+50}$ 🔴 Deletions $\color{red}\textsf{-1}$
🤖 Auto-generated by changelog workflow
Release notes
Open source →- Added
AtsCfSkidModel(none/sil), the enum backing the newats.custom.skid.modelfixed custom field on Terminal assets (kindId 44) that lets ATS Mobile know whether — and with which equipment brand — a terminal receives product via SKID before routing it through the SIL integration. Follows the same manualtoJson/fromJson/getLocaleKeypattern asAtsCfFuelType; unlike it,fromJsonfalls back tononeinstead of throwing, since the value comes from a custom field that may be empty or hold stale data.
- Added
-
3.29.020 Aug 2026Release notes
Open source →📋 Release Notes
This release includes the following changes:
✨ Features
- rework SIL SKID models to match backend contract and add response entities (
40c0ec5by @ManuelRomeroA)
📊 Diff Stats
Metric Count 📄 Files changed 10 🟢 Insertions $\color{green}\textsf{+2085}$ 🔴 Deletions $\color{red}\textsf{-375}$
🤖 Auto-generated by changelog workflow
Release notes
Open source →- Reworked the SIL SKID reception models to match the backend
createSilUnloadingOrdercontract 1:1, and moved them to a dedicatedsrc/ats/src/sil/folder.- Renamed (breaking vs. 3.28.0):
AtsSilInput→AtsSilUnloadingOrderInput,AtsSilCarreta→AtsSilTrailerInput,AtsSilCompartimento→AtsSilCompartmentInput. Fields are now English and aligned with the backendSilUnloadingOrderInput:numRef→operationId(the backend derives SILNum_Reffrom the operation, so the client sends the operation id),nomeMotorista/rgMotorista/cpfMotorista→driverName/driverRg/driverCpf,placaCavalo→truckPlate,carretas→trailers,corDoVeiculo→vehicleColor,possuiDnit→hasDnit,lacres→seals; trailerplacaCarreta→trailerPlate,compartimentos→compartments; compartmentnumCompart→compartmentNumber,volDescarga(nowint, backend requires an integer) →dischargeVolume,produto→productCode. - Added response entities for the mutation
result:AtsSilUnloadingOrder(reuses the existingAtsOperation),AtsSilTrailer,AtsSilCompartmentand its certifiedAtsSilCompartmentResult, plus theAtsSilUnloadingOrderStatusenum (pending/sent/sendFailed/completed).
- Renamed (breaking vs. 3.28.0):
- rework SIL SKID models to match backend contract and add response entities (
-
3.28.019 Aug 2026Release notes
Open source →📋 Release Notes
This release includes the following changes:
✨ Features
- add SIL SKID reception input models and remittance-sale CFOPs (
ff2dfd5by @ManuelRomeroA)
📊 Diff Stats
Metric Count 📄 Files changed 7 🟢 Insertions $\color{green}\textsf{+970}$ 🔴 Deletions $\color{red}\textsf{-1}$
🤖 Auto-generated by changelog workflow
Release notes
Open source →- Added
AtsSilInput,AtsSilCarretaandAtsSilCompartimento— the payload collected in ATS Mobile for the SKID reception flow and forwarded to the SIL integration. Fields use camelCase (GraphQL convention); the backend maps them to SIL's snake_case keys. Every field is nullable (obligatoriness is enforced by the backend).AtsSilInput/AtsSilCarretaexpose a private constructor that seeds their nested lists as growable and with one initial row, so consumers can add/remove without hitting an unmodifiable list. - Added CFOP codes
5923and6923toAtsPurchaseOrderCategoriesEntity.cfop, mapping them toAtsPurchaseOrderCategoriesEntity.remittanceSale.
- add SIL SKID reception input models and remittance-sale CFOPs (
-
3.27.319 Aug 2026Release notes
Open source →📋 Release Notes
This release includes the following changes:
🐛 Bug Fixes
- honour useFragment and extraFields in DeviceCommand.fetchAll (
d4e14e0by Jose Prieto, Claude Sonnet 4.6)
📊 Diff Stats
Metric Count 📄 Files changed 3 🟢 Insertions $\color{green}\textsf{+36}$ 🔴 Deletions $\color{red}\textsf{-25}$
🤖 Auto-generated by changelog workflow
Release notes
Open source →- Corrected
DeviceCommand.fetchAll(), which documenteduseFragmentandextraFieldsbut honoured neither: theresultselection was hardcoded toid,name,source,isGlobal,protocolandmodel, so callers asking for the full fragment never receiveddata,deviceId,protocolId,modelId,payload,modbusParameteroraccess. Consumers could not execute a fetched command over BLE, since its definition and payload live indata
- honour useFragment and extraFields in DeviceCommand.fetchAll (
-
3.27.218 Aug 2026Release notes
Open source →📋 Release Notes
This release includes the following changes:
- No changes detected
📊 Diff Stats
Metric Count 📄 Files changed 3 🟢 Insertions $\color{green}\textsf{+6}$ 🔴 Deletions $\color{red}\textsf{-3}$
🤖 Auto-generated by changelog workflow
Release notes
Open source →- Removed
@Deprecateddecorator in favor of backwards compatibility and prevent issues on CI untillayrz_sdkis completed.
-
3.27.118 Aug 2026Release notes
Open source →📋 Release Notes
This release includes the following changes:
✨ Features
- update LayrzAppLocalizationsDelegate to use LayrzAppLocalizations and enhance localization support (
4e047f3by @PHKenny)
🐛 Bug Fixes
- return LayrzAppLocalizationsDelegate from delegate() and bump to 3.27.1 (
36badb1by @ManuelRomeroA)
📊 Diff Stats
Metric Count 📄 Files changed 4 🟢 Insertions $\color{green}\textsf{+45}$ 🔴 Deletions $\color{red}\textsf{-4}$
🤖 Auto-generated by changelog workflow
Release notes
Open source →- Fixed
LayrzAppLocalizations.delegate()to return aLayrzAppLocalizationsDelegate(typed toLayrzAppLocalizations) instead of aLayrzI18nDelegate. The wrong delegate type registered aLayrzI18nin the widget tree, soLayrzAppLocalizations.of(context)never resolved and threwLayrzAppLocalizations was used before it was initialized— breaking any consumer (e.g.layrz_session's login) that still looks upLayrzAppLocalizations. Restored theLayrzAppLocalizationsDelegateclass that plants the correct type.
- update LayrzAppLocalizationsDelegate to use LayrzAppLocalizations and enhance localization support (
-
3.27.018 Aug 2026Release notes
Open source →📋 Release Notes
This release includes the following changes:
✨ Features
- replace LayrzAppLocalizations with LayrzI18n in fix_data.yaml (
f84a8c3by @PHKenny) - replace LayrzAppLocalizationsDelegate with LayrzI18nDelegate and remove deprecated class (
a2e96c6by @PHKenny) - refactor LayrzAppLocalizations to extend LayrzI18n and remove native/web detection files (
d1dd44fby @PHKenny) - un-deprecate LayrzAppLocalizations for ecosystem coexistence (
5fc8fdfby @ManuelRomeroA)
🐛 Bug Fixes
📊 Diff Stats
Metric Count 📄 Files changed 7 🟢 Insertions $\color{green}\textsf{+26}$ 🔴 Deletions $\color{red}\textsf{-483}$
🤖 Auto-generated by changelog workflow
Release notes
Open source →- Removed the
@Deprecatedannotation fromLayrzAppLocalizations. The3.26.0deprecation (in favor ofLayrzI18nfrompackage:layrz_i18n) was premature:layrz_themeand many ecosystem widgets still consumeLayrzAppLocalizations, and both localization engines are meant to coexist during the migration. The class is supported again;LayrzI18nremains the recommended API for new code.
- replace LayrzAppLocalizations with LayrzI18n in fix_data.yaml (
-
3.26.118 Aug 2026Release notes
Open source →📋 Release Notes
This release includes the following changes:
🐛 Bug Fixes
- pass ids to deleteDeviceCommands, add FirmwareBuild.fragment and firmwares on Model.fragment (
94f8fd7by Jose Prieto, Claude Sonnet 4.6)
📊 Diff Stats
Metric Count 📄 Files changed 5 🟢 Insertions $\color{green}\textsf{+37}$ 🔴 Deletions $\color{red}\textsf{-1}$
🤖 Auto-generated by changelog workflow
Release notes
Open source →- Corrected
DeviceCommand.delete()andDeviceCommand.deleteMany(), thedeleteDeviceCommandsfield now receives theidsargument. Without it the declared$idsvariable went unused and the request failed GraphQL validation with a 400, so nothing was ever deleted - Added
FirmwareBuild.fragment - Added
firmwarestoModel.fragment, usingFirmwareBuild.fragment
- pass ids to deleteDeviceCommands, add FirmwareBuild.fragment and firmwares on Model.fragment (
-
3.26.018 Aug 2026Release notes
Open source →- Migrated core user, authentication, and i18n types from
layrz_modelstolayrz_sdk, with re-exports so consumers keep seeing them:Avatar,Department,Employee,Token,UserPreferences,I18nKey,I18nTranslation,Language,ApiResponse. - Migrated API and GraphQL utilities to
layrz_sdk:LayrzConnector,LayrzApiExtras,StandardResponse,Gql,GqlQuery,GqlMutation,GqlSubscription, and related types. - Migrated all JSON converters to
layrz_sdk:ColorConverter,IconConverter,DurationConverter,TimestampConverter,DateConverter,RegExpConverter,ByteListConverter,TimeOfDayConverter,DynamicMapConverter,ParamDataMapConverterand their nullable variants. - Breaking:
TimeOfDayis deliberately hidden from thelayrz_sdkre-export to preserve Flutter'sTimeOfDayresolution; code annotating FlutterTimeOfDayfields withTimeOfDayConvertermust switch to the locally retainedFlutterTimeOfDayConverter. - Migrated all six enums to
layrz_sdk—ApiStatus,AppPlatform,AvatarType,ColorblindMode,MfaMethodandTokenAudience— re-exported so consumers see no change. - Breaking: The localization engine moved to the
layrz_i18npackage;LayrzAppLocalizationsis now@Deprecatedin favor ofLayrzI18nfrompackage:layrz_i18n/layrz_i18n.dart. - Added a
dart fixmigration that renamesLayrzAppLocalizationstoLayrzI18n, but the fix does NOT add the import—rundart fix --applyand manually addimport 'package:layrz_i18n/layrz_i18n.dart';. Asset.mappitLaborStartTimeandAsset.mappitLaborEndTimekeep their FlutterTimeOfDaytype, with no behavior changes for consumers.- Adds dependencies:
layrz_sdk: ^4.4.3andlayrz_i18n: ^1.0.1.
- Migrated core user, authentication, and i18n types from
-
3.25.114 Aug 2026Release notes
Open source →- Corrected
CommandInput.save(), thestatus/errors/resultselection now hangs off theaddDeviceCommand/editDeviceCommandmutation field instead of the mutation root - Corrected
DeviceCommand.execute(), the mutation field isexecuteDeviceCommandand notdeviceCommands - Corrected
Device.zigbeePermitJoinExpiresAt, removed the snake_caseJsonKeythat never matched the fragment field and always decoded to null - Corrected
Device.delete(),Device.deleteMany()andDevice.importDevicesIntoApp()to be sent as mutations, plus the field isimportDevicesIntoAppand notimportDevicesToApp - Added
InboundProtocol.detailedFragment, which isfragmentplus the protocol'smodels, and used it onInboundProtocol.fetch()
- Corrected
-
3.25.014 Aug 2026Release notes
Open source →- Added
saleFromThirdPartyDeliveredBySellervalue toAtsPurchaseOrderCategoriesEntityenum (SALE_FROM_THIRD_PARTY_DELIVERED_BY_SELLER, CFOP 5120/6120), so it no longer falls back tonotDefined.
- Added
-
3.24.710 Aug 2026 -
3.24.507 Aug 2026Release notes
Open source →- Added
StockClosingInfoPamodel - Added
totalWithdrawalsByComboiovalue inStockClosingTankandStockClosingInputmodels
- Added
-
3.24.405 Aug 2026 -
3.24.305 Aug 2026Release notes
Open source →- Fixes on
ZigbeeDeviceExposeandZigbeeDevice - Corrected
FlespiSubmoduleConfig, wrong type and fields on GraphQL fragment - This version was released manually
- Fixes on
-
3.24.205 Aug 2026 -
3.24.105 Aug 2026Release notes
Open source →- Corrected
lastSeenonZigbeeDeviceto have a converter. - This version was released manually
- Corrected
-
3.24.004 Aug 2026Release notes
Open source →- Added an API connector to
ExternalAccount, withfetch(),fetchAll()anddeleteMany(), plusExternalAccountInput.save() - Added
ExternalAccountVariantto target the Mappit-prefixed fields, defaulting tostandard - Added
ExternalAccount.gqlFragment, so consumers no longer need to declare the fragment themselves Geofencenow requests theerrorsfield on every API call and logs its content whenever the response status is notOK, matchingAction,OperationandExternalAccount
- Added an API connector to
-
3.23.104 Aug 2026Release notes
Open source →- Added
onlyConfiotargument onDevice.fetchAll()to include it in the GraphQL query and variables, allowing callers to filter devices that have Confiot enabled. - This version was released manually
- Added
-
3.23.004 Aug 2026Release notes
Open source →Device,DeviceCommand,DeviceTelemetryand other models related to device entity now use theLayrzConnector.query()andLayrzConnector.mutate().
-
3.22.004 Aug 2026Release notes
Open source →- Added API Connector on
DeviceCommand - Standarized all tupled returns to
StandardResponse<T>
- Added API Connector on
-
3.21.004 Aug 2026Release notes
Open source →- Added API connector for
InboundProtocol,Model,FlespiProtocol,FlespiModelandFlespiChannel
- Added API connector for
-
3.20.602 Aug 2026Release notes
Open source →- Updated
layrz_loggingdependency to now include colors on logs emitted by the system - This version was released manually
- Updated
-
3.20.502 Aug 2026Release notes
Open source →- Added
LayrzApiExtrasto include extra information on the usage ofLayrzConnector, includingversionandnameof the app. - This version was released manually
- Added
-
3.20.402 Aug 2026Release notes
Open source →- Adjustments on
User.fetch()to includeparentId. - This version was released manually
- Adjustments on
-
3.20.302 Aug 2026Release notes
Open source →- Adjustments on
RegisteredApp.load()to use thetoJson()on enums - This version was released manually
- Adjustments on
-
3.20.231 Jul 2026 -
3.20.131 Jul 2026 -
3.20.030 Jul 2026Release notes
Open source →- Fixed GraphQL fragment emission order. Fragments were collected in pre-order, so a fragment that spread another was written above the fragment it depended on, producing documents where a fragment is referenced before it is defined. Nested dependencies are now emitted first, and cyclic fragment references are broken safely instead of overflowing the stack.
- Added
fragmentgetters toTagOnStudent,TagOnBusRouteandTagOnNotification. - Added API connectors for the TagOn entities with
fetchAll,fetchanddeleteMultipleon the models, andsaveon the existingTagOnStudentInput,TagOnBusRouteInputandTagOnNotificationInputmodels. - Added
TagOnStudent.bulkLoadfor bulk importing students from raw data rows. Thedataparameter isList<Map<String, dynamic>>(raw rows), not the typedTagOnStudentInputmodel, because the bulk endpoint resolves bus routes by name from nested objects in the raw data (e.g.,{'busRoute': {'name': 'Route 4'}}), whereasTagOnStudentInputonly has a flatbusRouteId. Returns(ApiStatus, Map<String, dynamic>?)where the map has exactly three keys:'status'(the serializedApiStatus),'errors'and'studentsWithErrors'(aList<Map<String, dynamic>>, each entry holdingerrorsanddatafor a row that failed to import). - Added
TagOnStudent.exportto export students to a downloadable file, returning(ApiStatus, String?)with the generatedresultUri. - Added
TagOnNotification.sendstatic method to send a notification by its ID. - All TagOn API connectors (
TagOnStudent,TagOnBusRoute,TagOnNotification) authenticate via theAuthorization: LayrzToken <token>header thatLayrzConnectorsets automatically. Authentication is no longer sent as a GraphQL field argument. TheapiTokenparameter remains on every method signature for consistency.
-
3.19.330 Jul 2026Release notes
Open source →- Breaking: Renamed
MappitReportInputMultitoMappitReportMultiInputto match the backend GraphQL schema, which renamed the input type. Queries declaringMappitReportInputMultiare rejected by the server withUnknown type 'MappitReportInputMulti'. The source file was also renamed fromreport_input_multi.darttoreport_multi_input.dart. Field names and types are unchanged. - Fixed the
$idvariable type inGeofence.fetch, which was declared asString!instead ofID!, causing the server to reject the query withVariable $id of type String! used in position expecting type ID. - Fixed
Geofence.fetchAll, which ignored thevariantargument and always queried thegeofencesfield, and referenced an undeclared$idvariable in its arguments, making the query invalid for every variant. - Removed the
apiTokenGraphQL variable and argument from every caller in the geofences module (Geofence,GeofenceInputandSearchItem). Authentication travels in theAuthorizationheader, whichLayrzConnectoralready sets, so sending it as a query variable was redundant. TheapiTokenparameter remains on every method signature.
- Breaking: Renamed
-
3.19.229 Jul 2026Release notes
Open source →- Updated
Geofence.fetch,Geofence.fetchAll,Geofence.saveandGeofence.deleteMultipleto accept avariantargument (standard,mappit,sdm) to resolve the query/mutation names and fragments per variant, aligning with the backend GraphQL schema.
- Updated
-
3.19.129 Jul 2026 -
3.19.029 Jul 2026Release notes
Open source →- Added
SdmPenInput,SdmIngredientInput,SdmOperatorInputandSdmRecipeInputunfreezed input models for the SDM entities. - Added
fragmentgetters toSdmPen,SdmIngredient,SdmOperatorandSdmRecipe. - Added API connectors for the SDM entities with
fetchAll,fetch,deleteMultipleandsave(on the input models). - Added bulk operations to
SdmPen,SdmIngredientandSdmRecipe:bulkLoad,exportandformatExcel, returning the generatedresultUriwhere applicable. - Added
UserVariantenum (standard,ats,atsAdmin,brickhouse,sdm,tagonand themappit*variants) to drive user queries and mutations from a single source of truth. - Added variant-aware API connectors to
User:fetchAll,fetch,deleteMultipleandsave(onUserInput), resolving the query, mutation and input type names per variant, with optionalappId,languageIdandmappitModulearguments. - Added
User.fragment(variant:)coveringaccess,referencesIds,categoryId,tagsIdsplus the variant-specific fields, and awithDetailsoption onUser.fetchfor thetags,references,categoryandallowedAppsexpansions. - Added account action connectors to
User:importIntoApp,resetPassword,setPaymentWarning,lock,suspend,inviteandrequestActivityReport. - Migrated
User.fetchAllandUser.fetchAllForAppUsersto the typedconnector.queryAPI;fetchAllForAppUsersremains locked to thestandardvariant by design. - Added
ReferenceVariantenum (standard,mappit,sdm) andReferenceInputinput model. - Added variant-aware API connectors to
Reference:fragment(variant:),fetchAll,fetch,clone,deleteMultipleandsave(onReferenceInput). - New
GqlVariableType.unixfor GraphQLUnixtimestamp variables. - Added
ReferenceVariantenum (standard,mappit,sdm) to drive reference queries and mutations from a single source of truth. - Added variant-aware API connectors to
Reference:fetchAll,fetch,deleteMultipleandsave(onReferenceInput), resolving the query, mutation and input type names per variant —references/mappitReferences/sdmReferencesfor queries, andadd/edit/deletemutations with theMappitandSdminfixes. - Added
Reference.fragment(variant:)coveringid,name,category,customFields,qrCodeandaccess, reusingCustomField.fragmentandAccess.idFragment. - Added
Reference.clone, which uses thecloneReferencemutation for every variant.
- Added
-
3.18.227 Jul 2026Release notes
Open source →- Updated
Gqlto 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.
- Updated
-
3.18.127 Jul 2026Release notes
Open source →- New
GqlVariableType.enum_()factory for GraphQL enum variables, allowing type-safe enum variable declarations in queries and mutations. - Corrected
RegisteredApp.load()to fix theplatformandtechnologyfields to be their respective enumsAppPlatformandAppTechnologyinstead of plain strings, ensuring proper type safety and deserialization.
- New
-
3.18.022 Jul 2026Release notes
Open source →- Added API connector for
Geofencewith full GraphQL support (fetch,fetchAll,save,delete,exportMany). - Added API connector for
GeofenceInputwith full GraphQL support (save).
- Added API connector for
-
3.17.422 Jul 2026Release notes
Open source →- Fixed an issue on
AvailableApp.fetchAll()where theapiTokenvariable was not being passed to the GraphQL query, resulting in an empty response. The query now correctly includes theapiTokenargument.
- Fixed an issue on
-
3.17.322 Jul 2026Release notes
Open source →- Corrected Fragment names on
AppFont.fragmentandInstanceDns.fragmentto match the GraphQL schema types (AppFontandInstanceDns) instead of the previous incorrect names (FontInformationandDnsConfiguration).
- Corrected Fragment names on
-
3.17.222 Jul 2026 -
3.17.122 Jul 2026Release notes
Open source →LayrzConnectornow exposes typedquery()andmutate()methods returning a decodedApiResponsewithstatus,errorsandresultRegisteredApp.registerWithoutCustomization(),registerWithCustomization()andedit()now return(ApiStatus, Map<String, dynamic>?, RegisteredApp?)records with the operation status, field errors and decoded resultAppInstance,PushDeviceandAvailableAppAPI callers migrated to the typed connector API- Fixed
registerWithCustomization()reportingINTERNAL_ERRORon successful responses
-
3.17.022 Jul 2026 -
3.16.122 Jul 2026 -
3.16.021 Jul 2026Release notes
Open source →- Add
PushDevicemodel withvalidate()API caller to check device registration status on the backend and retrieve associated operation IDs - Add
PushDevice.register()to register a new push device for an app and retrieve the created device ID - Add
PushDevice.bindOperations()to bind or unbind a list of operations to a push device - Add
PushDevice.deregister()to deregister a push device by its ID
- Add
-
3.15.221 Jul 2026Release notes
Open source →- Fix Operation GraphQL fragment: query
accountIdinstead ofexternalAccountId, remove unexposedemailTemplateId, alignaccesssub-selection with AccessPermission schema (id, read, write, manage, objectId, userId, module) - Add
appIdargument toOperation.fetch()to filter operations by app - Slim
Operation.fetchAll()result selection toid,name,operationType - Invoke
onResponseonly on error responses acrossRegisteredAppandOperationAPI callers - Parse
OperationInput.save()result as a single object
- Fix Operation GraphQL fragment: query
-
3.15.121 Jul 2026 -
3.15.021 Jul 2026Release notes
Open source →- Expanded
Operation.gqlFragmentto cover the full operation configuration (webhook, email, SMS/Twilio, push, in-app fields) soOperation.fetch/fetchAllreturn complete data. - Added RegisteredApp lifecycle callers (registerWithoutCustomization, registerWithCustomization, edit, delete) and completed app management coverage.
- Added User.fetchAllForAppUsers for app user management contexts (includes username and email fields).
- Add tolerant API status parsing accepting both legacy (NOTFOUND) and modern (NOT_FOUND) backend status formats
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.
- Expanded
-
3.14.021 Jul 2026Release notes
Open source →- PushSecrets model; RegisteredApp iosPushSecrets/androidPushSecrets (typed) and hasSvcPushSecrets (boolean status).
- Operation/OperationInput appId for app-bound PUSH_NOTIFICATION operations.
- App management API callers on RegisteredApp (fetch, setPushSecrets, access grant/revoke, asset/device import), AppInstance (deprecate/migrate/request), User (loginAs).
- Operations API callers (fetch, fetchAll, save, delete).
- GqlVariableType redesigned as a composable type builder (list(of:, isRequired:)/input(of:)); GqlVariable simplified.
-
3.13.315 Jul 2026Release notes
Open source →- Made
performedBynullable (User?) inMappitRouteLinkingHistory. When an employee is removed, the relation is soft-deleted and the backend sendsperformedBy: nullfor historical records, whileperformedByIdstill holds the plain ID. The previous non-nullable declaration crashedfromJsonwithtype 'Null' is not a subtype of type 'Map<String, dynamic>'. This alignsperformedBywith the already-nullablecurrentSellerfield.
- Made
-
3.13.114 Jul 2026Release notes
Open source →- Added
constant.numbervalue toAtsStreamExitStructureTypeenum, a sibling ofconstantfor ATAK outbound structure entries whosevalueshould be sent as a real JSON number instead of a string.
- Added
-
3.13.013 Jul 2026Release notes
Open source →- Added
ActionType.zigbeeChange(ZIGBEE_CHANGE) plus theActionZigbeeSetting,ActionZigbeeSettingsandActionZigbeeSettingsInputmodels, with a newzigbeeSettingsfield onActionandActionInput. - Added API callers
Action.fetch,Action.fetchAll,Action.deleteMultipleandActionInput.save, following theGqlQuerybuilder pattern. - Added
Device.fetchZigbeeCapable, returning the devices that have Zigbee exposes bound to them (id, name, ident andexposes). - The
Action,DeviceandUsercallers no longer send theapiTokenGraphQL argument — authentication relies on theAuthorization: LayrzTokenheader; requires a layrz-api deployment with the dual-authactions,devicesandusersendpoints.
- Added
-
3.12.110 Jul 2026Release notes
Open source →- Changed vgNavio value type from
inttoStringinCaclTFBDetailsandCaclTFBDetailsInputmodels
- Changed vgNavio value type from
-
3.12.010 Jul 2026Release notes
Open source →- Added
AssetWidget,AssetWidgetConfig, andAssetWidgetRangemodels (with matching input variants) plus a read-onlywidgetsfield onAsset, backing the per-asset live-data widgets feature. Writes go through the dedicatedupdateAssetWidgetsmutation, not the asset model. - Added
NUMERICandLINE_CHARTvalues to theRenderWidgetenum. LayrzConnectornow requires anapiTokenand injects anAuthorization: LayrzToken {token}header on every request and subscription, migrating authentication off the GraphQLapiTokenvariable.
- Added
-
3.11.909 Jul 2026Release notes
Open source →- Breaking: Fixed null icon handling in
WorkspaceInput.fromJson. Previously, workspaces with no icon set would crash with aNull check operator used on a null valueerror during JSON deserialization. The icon field now falls back tosolarOutlineQuestionSquarewhen 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.
- Breaking: Fixed null icon handling in
-
3.11.709 Jul 2026Release notes
Open source →- Added
numericSlider,enumSelector,textCommandandrawValuevalues toRenderWidgetenum. - Added
receptionAssetId(String?) field toAtsPurchaseOrdermodel.
- Added
-
3.11.602 Jul 2026Release notes
Open source →- Added
StockClosingGeneralInfonew model - Updated
StockClosing,StockClosingInput,StockClosingTankandStockClosingTankInputwith new valuesopeningBalanceAmbient,totalEntriesAmbient,totalWithdrawalsAmbientandclosingBalanceAmbient
- Added
-
3.11.501 Jul 2026Release notes
Open source →- Added
jsonandjson.arrayvalues toAtsStreamExitStructureTypeenum, allowing ATAK outbound services to nest a group of structure fields into a single JSON object or a single-element JSON array. - Added
attendant.idandattendant.user.idvalues toAtsStreamExitStructureTypeenum. - Added
source(String?) andnested(List<OutboundStructureInput>/List<OutboundStructure>) fields toOutboundStructureInputandOutboundStructuremodels, to support the newjson/json.arraystructure types.
- Added
-
3.11.429 Jun 2026Release notes
Open source →- Fixed issue on
Token.createwheredurationvariable was being sent asintinstead ofDurationtype, causing GraphQL validation errors. Now, thedurationvariable is correctly sent as aDurationtype in seconds.
- Fixed issue on
-
3.11.323 Jun 2026