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.Ofrep
using 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-ofrep
use 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.git
import 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-provider
use 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-sdk
require '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 unchanged

All Supported Languages

For the latest SDKs and providers, see the OpenFeature ecosystem and the OFREP protocol spec.

On this page