filemaker_odata_api 0.1.0
filemaker_odata_api: ^0.1.0 copied to clipboard
A typed Dart client for the Claris FileMaker OData v4 API, with a fluent query builder for $filter, $select, $orderby, $top and $skip.
filemaker_odata_api #
A typed Dart client for the Claris FileMaker OData v4 API, with a fluent $filter query builder. Works anywhere Dart runs: Flutter (iOS, Android, macOS, Windows, web), server-side Dart, and CLI tools.
Not affiliated with or endorsed by Claris International Inc. "FileMaker" and "Claris" are trademarks of Claris International Inc.
OData vs the Data API #
This is the companion to filemaker_data_api. They are different APIs, not two flavours of one:
OData (this package) |
Data API | |
|---|---|---|
| Auth | HTTP Basic, every request | Session token |
| Addresses | Base tables | Layouts |
| Query | OData v4 ($filter, $select, ...) |
Find requests / found sets |
| Standard | OData 4.01 | FileMaker-specific |
Pick OData for standards-based tooling and ad-hoc querying; pick the Data API for layout-scoped access, portals, and script results.
Install #
dependencies:
filemaker_odata_api: ^0.1.0
Usage #
import 'package:filemaker_odata_api/filemaker_odata_api.dart';
final od = ODataClient(
host: 'https://fms.example.com',
database: 'Contacts',
username: 'admin',
password: 'secret',
);
final result = await od.query(
table: 'Contacts',
filter: Filter.equals('state', 'NSW').and(Filter.greaterThan('age', 21)),
select: ['id', 'name', 'state'],
orderBy: [const OrderBy('name')],
top: 50,
count: true,
);
print('${result.rows.length} of ${result.count}');
for (final row in result.rows) {
print('${row['id']}: ${row['name']}');
}
od.close();
Building filters #
Filter.equals('state', 'NSW') // state eq 'NSW'
Filter.greaterThan('age', 21) // age gt 21
Filter.contains('name', 'an') // contains(name,'an')
Filter.equals('name', "O'Brien") // name eq 'O''Brien' (auto-escaped)
Filter.equals('state', 'NSW')
.and(Filter.greaterThan('age', 21)) // (state eq 'NSW') and (age gt 21)
.not() // not (...)
Filter.raw("year(created) eq 2026") // escape hatch for raw expressions
Error handling #
| Exception | When |
|---|---|
ODataAuthException |
HTTP 401 |
ODataNotFoundException |
HTTP 404 |
ODataTransportException |
Host unreachable or non-JSON response |
ODataException |
Any other error status |
Requirements #
- FileMaker Server or FileMaker Cloud with OData access enabled.
- A FileMaker account whose privilege set allows the OData/
fmodataextended privilege.
License #
MIT