filemaker_odata_api 0.1.0 copy "filemaker_odata_api: ^0.1.0" to clipboard
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/fmodata extended privilege.

License #

MIT

0
likes
160
points
0
downloads

Documentation

API reference

Publisher

verified publisheraphero.com.au

Weekly Downloads

A typed Dart client for the Claris FileMaker OData v4 API, with a fluent query builder for $filter, $select, $orderby, $top and $skip.

Repository (GitHub)
View/report issues

Topics

#filemaker #claris #odata #rest #database

License

MIT (license)

Dependencies

http, meta

More

Packages that depend on filemaker_odata_api