Other Languages (OFREP)
Use Flipswitch with any OpenFeature SDK via native OFREP protocol support
Flipswitch natively implements the OpenFeature Remote Evaluation Protocol (OFREP), so any language with an OpenFeature SDK and OFREP provider works directly — no custom integration needed.
Browse the full OpenFeature ecosystem for available SDKs and providers.
OFREP providers use polling for flag updates. For real-time SSE streaming, use an official Flipswitch SDK where available.
.NET
GitHub: open-feature/dotnet-sdk · open-feature/dotnet-sdk-contrib
dotnet add package OpenFeature.Providers.Ofrepusing OpenFeature;
using OpenFeature.Contrib.Providers.Ofrep;
var provider = new OFREPProvider(new OFREPProviderOptions
{
BaseUrl = "https://api.flipswitch.io",
Headers = new Dictionary<string, string>
{
["X-API-Key"] = "YOUR_API_KEY"
}
});
await Api.Instance.SetProviderAsync(provider);
var client = Api.Instance.GetClient();
var darkMode = await client.GetBooleanValueAsync("dark-mode", false);Rust
GitHub: open-feature/rust-sdk · open-feature/rust-sdk-contrib
cargo add open-feature open-feature-ofrepuse open_feature::{OpenFeature, EvaluationContext};
use open_feature_ofrep::OFREPProvider;
let provider = OFREPProvider::new(
"https://api.flipswitch.io",
Some("YOUR_API_KEY"),
);
let mut api = OpenFeature::singleton_mut().await;
api.set_provider(provider).await;
let client = api.create_client();
let dark_mode = client.get_bool_value("dark-mode", Some(&context), None).await?;Swift
GitHub: open-feature/swift-sdk · open-feature/ofrep-swift-client-provider
Add via Swift Package Manager:
https://github.com/open-feature/ofrep-swift-client-provider.gitimport OpenFeature
import OFREPProvider
let provider = OFREPProvider(
baseURL: URL(string: "https://api.flipswitch.io")!,
headers: ["X-API-Key": "YOUR_API_KEY"]
)
OpenFeatureAPI.shared.setProvider(provider: provider)
let client = OpenFeatureAPI.shared.getClient()
let darkMode = client.getBooleanValue(key: "dark-mode", defaultValue: false)PHP
GitHub: open-feature/php-sdk · open-feature/php-sdk-contrib
composer require open-feature/sdk open-feature/ofrep-provideruse OpenFeature\OpenFeatureAPI;
use OpenFeature\Contrib\Providers\OFREP\OFREPProvider;
$provider = new OFREPProvider([
'baseUrl' => 'https://api.flipswitch.io',
'headers' => [
'X-API-Key' => 'YOUR_API_KEY'
]
]);
$api = OpenFeatureAPI::getInstance();
$api->setProvider($provider);
$client = $api->getClient();
$darkMode = $client->getBooleanValue('dark-mode', false);Ruby
GitHub: open-feature/ruby-sdk · open-feature/ruby-sdk-contrib
gem install openfeature-sdkrequire 'openfeature/sdk'
require 'openfeature/contrib/providers/ofrep'
provider = OpenFeature::Contrib::Providers::OFREP.new(
base_url: 'https://api.flipswitch.io',
headers: { 'X-API-Key' => 'YOUR_API_KEY' }
)
OpenFeature::SDK.configure do |config|
config.set_provider(provider)
end
client = OpenFeature::SDK.build_client
dark_mode = client.fetch_boolean_value(flag_key: 'dark-mode', default_value: false)Direct OFREP API
You can also call the OFREP endpoints directly via HTTP — useful for scripting, testing, or languages without an OFREP provider yet.
Single Flag Evaluation
curl -X POST https://api.flipswitch.io/ofrep/v1/evaluate/flags/dark-mode \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"context": {
"targetingKey": "user-123",
"email": "user@example.com"
}
}'Response:
{
"key": "dark-mode",
"value": true,
"variant": "enabled",
"reason": "TARGETING_MATCH"
}Bulk Evaluation
curl -X POST https://api.flipswitch.io/ofrep/v1/evaluate/flags \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"context": {"targetingKey": "user-123"}}'Response:
{
"flags": [
{"key": "dark-mode", "value": true, "variant": "enabled", "reason": "TARGETING_MATCH"},
{"key": "max-items", "value": 50, "variant": "high", "reason": "DEFAULT"}
]
}ETag Support
Use ETags for efficient caching:
# First request returns ETag header
curl -X POST https://api.flipswitch.io/ofrep/v1/evaluate/flags \
-H "X-API-Key: YOUR_API_KEY" \
-d '{"context": {"targetingKey": "user-123"}}'
# Response includes: ETag: "abc123"
# Subsequent requests with If-None-Match
curl -X POST https://api.flipswitch.io/ofrep/v1/evaluate/flags \
-H "X-API-Key: YOUR_API_KEY" \
-H 'If-None-Match: "abc123"' \
-d '{"context": {"targetingKey": "user-123"}}'
# Returns 304 Not Modified if unchangedAll Supported Languages
| Language | OpenFeature SDK | OFREP Provider |
|---|---|---|
| .NET | dotnet-sdk | dotnet-sdk-contrib |
| Rust | rust-sdk | rust-sdk-contrib |
| Swift | swift-sdk | ofrep-swift-client-provider |
| PHP | php-sdk | php-sdk-contrib |
| Ruby | ruby-sdk | ruby-sdk-contrib |
For the latest SDKs and providers, see the OpenFeature ecosystem and the OFREP protocol spec.