Lightweight PHP client for interacting with FileMaker's OData endpoint using Saloon.
- Connector:
IFresh\FileMakerODataApi\FileMakerODataConnector— builds the base URL, provides authentication and resources. - Resources:
IFresh\FileMakerODataApi\Resources\Resources\MetadataResource— metadata endpoints.IFresh\FileMakerODataApi\Resources\Resources\RecordsResource— CRUD operations for entity sets.
- Request classes live under
src/Requests(metadata and records). Examples:IFresh\FileMakerODataApi\Requests\Metadata\GetDatabaseNamesRequestIFresh\FileMakerODataApi\Requests\Metadata\GetTableListRequestIFresh\FileMakerODataApi\Requests\Metadata\GetDatabaseMetadataRequestIFresh\FileMakerODataApi\Requests\Records\CreateRecordRequestIFresh\FileMakerODataApi\Requests\Records\UpdateRecordRequestIFresh\FileMakerODataApi\Requests\Records\DeleteRecordRequestIFresh\FileMakerODataApi\Requests\Records\FetchRecordsRequestIFresh\FileMakerODataApi\Requests\Records\FetchSingleRecordRequest
- Query helpers:
IFresh\FileMakerODataApi\QueryOptions - Custom pending request to merge query params:
IFresh\FileMakerODataApi\Requests\PendingFileMakerRequest
composer require ifresh/filemaker-odata-apiCopy environment template and set values:
- .env.example
- FM_HOST
- FM_USERNAME
- FM_PASSWORD
use IFresh\FileMakerODataApi\FileMakerODataConnector;
$connector = new FileMakerODataConnector(
host: 'https://example.com',
username: 'user',
password: 'pass',
database: 'Tasks' // optional default database
);
// Metadata
$databases = $connector->metadata()->getDatabaseNames();
// Records
$recordsResource = $connector->records('Assignees');
$new = $recordsResource->createRecord(['First Name' => 'John', 'Last Name' => 'Doe']);
$single = $recordsResource->fetchSingleRecord($new['PrimaryKey']);See src/FileMakerODataConnector.php and resources for more methods.
Use IFresh\FileMakerODataApi\QueryOptions to supply OData query options (filter, orderby, top, skip, select, count).
This package is tested with Pest. See the test bootstrap and helpers:
- tests/Pest.php
- tests/TestCase.php
- Fixtures for faking HTTP responses: tests/Fixtures/ODataFixture.php and JSON fixtures in tests/Fixtures/Saloon
Run tests:
composer install --dev
./vendor/bin/pest- Coding standards via Laravel Pint (dev).
- Static analysis: phpstan.neon (level 6).
- The connector uses Saloon's
BasicAuthenticatorby default (see test: tests/Feature/FileMakerODataConnectorTest.php).
See composer.json for package metadata: composer.json