Configuration
ConnectionInfo
All clients require a ConnectionInfo object:
var conn = new ConnectionInfo
{
FmsUri = "https://your-server.com",
Database = "YourDatabase",
Username = "admin",
Password = "password"
};
REST API Version
Set RestTargetVersion to target a specific Data API version:
conn.RestTargetVersion = RestTargetVersion.v1; // default
conn.RestTargetVersion = RestTargetVersion.v2;
conn.RestTargetVersion = RestTargetVersion.vLatest;
Creating a Client Directly
var client = new FileMakerRestClient(new HttpClient(), conn);
Or using IHttpClientFactory (available on netstandard2.0+):
var client = new FileMakerRestClient(httpClientFactory, conn);
When constructed with IHttpClientFactory, the client uses factory-managed clients for container downloads, avoiding connection pool exhaustion from creating ad-hoc HttpClient instances.
Using Dependency Injection
Using Extension Methods (Recommended)
The simplest approach uses the built-in AddFMDataRest extension method, which handles all registration in one call:
services.AddFMDataRest(conn =>
{
conn.FmsUri = "https://your-server.com";
conn.Database = "YourDatabase";
conn.Username = "admin";
conn.Password = "password";
});
This registers:
ConnectionInfoas a singletonIAuthTokenProvider(usingDefaultAuthTokenProvider)- A named
HttpClientviaIHttpClientFactory FileMakerRestClientas a singleton, available as bothIFileMakerApiClientandIFileMakerRestClient
You can optionally configure the underlying HttpClient:
services.AddFMDataRest(
conn =>
{
conn.FmsUri = "https://your-server.com";
conn.Database = "YourDatabase";
conn.Username = "admin";
conn.Password = "password";
},
httpClient =>
{
httpClient.Timeout = TimeSpan.FromSeconds(30);
});
The method returns IHttpClientBuilder, which lets you chain additional configuration such as retry policies or custom message handlers.
For the XML/CWP client, use AddFMDataXml from the FMData.Xml namespace:
services.AddFMDataXml(conn =>
{
conn.FmsUri = "https://your-server.com";
conn.Database = "YourDatabase";
conn.Username = "admin";
conn.Password = "password";
});
Note: The
AddFMDataRestandAddFMDataXmlextension methods require netstandard2.0 or later.
Manual Registration
If you prefer manual control or are targeting netstandard1.3/net45, you can wire up registration yourself.
Standard (Scoped) Lifetime:
services.AddSingleton<ConnectionInfo>(new ConnectionInfo
{
FmsUri = "https://your-server.com",
Database = "YourDatabase",
Username = "admin",
Password = "password"
});
services.AddHttpClient<IFileMakerApiClient, FileMakerRestClient>();
This creates a new FileMakerRestClient per scope (typically per HTTP request in ASP.NET Core).
Singleton Lifetime:
For better performance when making many Data API calls per request, register as a singleton:
services.AddHttpClient(); // register IHttpClientFactory
services.AddSingleton<ConnectionInfo>(new ConnectionInfo
{
FmsUri = "https://your-server.com",
Database = "YourDatabase",
Username = "admin",
Password = "password"
});
services.AddSingleton<IFileMakerApiClient, FileMakerRestClient>(sp =>
{
var hcf = sp.GetRequiredService<IHttpClientFactory>();
var ci = sp.GetRequiredService<ConnectionInfo>();
return new FileMakerRestClient(hcf.CreateClient(), ci);
});
The singleton approach reuses the FileMaker Data API token across requests, reducing authentication overhead.
FileMaker Cloud Authentication
For FileMaker Cloud (Claris Connect), use FileMakerCloudAuthTokenProvider:
var conn = new ConnectionInfo
{
FmsUri = "https://yourhost.account.filemaker-cloud.com",
Database = "YourDatabase",
Username = "user@domain.com",
Password = "password"
};
var client = new FileMakerRestClient(
new HttpClient(),
new FileMakerCloudAuthTokenProvider(conn));
FileMakerCloudAuthTokenProvider handles authentication via AWS Cognito. The default Cognito settings are pre-configured for FileMaker Cloud:
| Property | Default |
|---|---|
CognitoUserPoolID | us-west-2_NqkuZcXQY |
CognitoClientID | 4l9rvl4mv5es1eep1qe97cautn |
RegionEndpoint | us-west-2 |
Override these on ConnectionInfo if your FileMaker Cloud instance uses different values.
For a full description of using the FileMaker Data API with FileMaker Cloud, see this discussion.