← Back to Docs

smartSettings API Reference

Advanced configuration management for Enterprise and B2B SaaS platforms. Manage application settings with versioning, encryption, nested configurations, and per-customer overrides.

Base URLs

EnvironmentBase URL
Sandboxhttps://api.dev.smartobjx.com/settings-demo
ProductionProvided by your smartObjx account administrator

All endpoints require authentication headers.

Domain Model

Application
Entry point for a body of settings. Applications may have multiple Configurations. Has Name, Description, ConfigId, and Start date. Think of it as a settings container for a software application or module.
Configuration
A collection of Settings. May also contain nested Configurations. No limit on depth — helps break complex settings into manageable, hierarchical pieces (e.g., Application → Module → Feature).
Setting
An individual setting with Name, Description, type, value, optional encryption, initialization vector, and a start date for version activation. Settings support scheduled activation — set a future start date and the value takes effect automatically.
Distribution
Shows what percentage of clients use the default setting vs. have their own custom override value. Useful for understanding how customized your tenant base is for a given setting.

Endpoints

GET /application

List all Applications. Returns a JSON array of Application objects.

Response

[
  {
    "$id": "1",
    "Name": "My SaaS App",
    "Description": "Main application settings",
    "ConfigId": "c1d2e3f4-a5b6-7890-cdef-1234567890ab",
    "OID": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "SubscriberID": "33f13e11-c505-48fa-9e6b-85f0b1c4599c",
    "OwnerID": "45ef2936-160e-47dc-bd17-3dc0060acec9",
    "Version": "2024-01-01T00:00:00Z"
  }
]

cURL example

curl -X GET "https://api.dev.smartobjx.com/settings-demo/application" \
  -H "Ocp-Apim-Subscription-Key: fd8efd80-f215-4c73-95f2-23841e98acbd" \
  -H "Ocp-Apim-POV-Key: 45ef2936-160e-47dc-bd17-3dc0060acec9"

POST /application

Create or save an Application.

Request body

{
  "Name": "My SaaS App",
  "Description": "Configuration for the main application"
}

Response

Returns the created/updated Application object with generated OID and ConfigId.


GET /configuration/{configId}

Get a Configuration by its ConfigId. Returns the Configuration with all its Settings and nested Configurations.

Parameters

ParameterTypeDescription
configIdpath (GUID)The ConfigId of the configuration to retrieve

Response

Returns a Configuration object containing its Settings array and any nested Configurations.


POST /configuration/{appId}

Save a Configuration within an Application.

Parameters

ParameterTypeDescription
appIdpath (GUID)The OID of the parent Application

Request body

A Configuration object with its Settings.


GET /distribution/{oid}/{settingName}

Get the distribution of a setting across clients. Shows how many clients use the default value vs. have custom overrides.

Parameters

ParameterTypeDescription
oidpath (GUID)The OID of the configuration or application
settingNamepath (string)The name of the setting to check

Response

Returns a list of SettingDistribution objects showing the value breakdown across clients.


Use Cases

  • Per-customer feature toggles in multi-tenant SaaS
  • Encrypted sensitive configuration values
  • Versioned settings with scheduled activation dates
  • Setting distribution analytics across client base
  • White-label configuration for reseller partners
  • Nested configuration hierarchies for complex applications

Integration Code

JavaScript

const headers = {
  'Content-Type': 'application/json',
  'Ocp-Apim-Subscription-Key': 'your-subscription-key',
  'Ocp-Apim-POV-Key': 'your-pov-key'
};

// List all Applications
const apps = await fetch('https://your-settings-api/application', {
  method: 'GET', headers
}).then(r => r.json());
// Returns: [{Name, ConfigId, OID, Version, ...}, ...]

// Get a Configuration by ConfigId
const config = await fetch(`https://your-settings-api/configuration/${configId}`, {
  method: 'GET', headers
}).then(r => r.json());

// Check setting distribution across clients
const dist = await fetch(
  `https://your-settings-api/distribution/${oid}/${settingName}`, {
  method: 'GET', headers
}).then(r => r.json());

C# with smartConnectors

// NuGet: Install SmartObjx.Connectors
var config = new smartConnectorInstace();
config.BasePath = "https://your-settings-api-url";
config.ApiKey.Add("Ocp-Apim-POV-Key", "your-pov-key");
config.ApiKey.Add("Ocp-Apim-Subscription-Key", "your-subscription-key");

// List all applications
ApplicationApi appApi = new ApplicationApi(config);
// GET /application returns all applications

// Create an application
Application application = new Objx.Settings.Application("My App");
application = appApi.SaveApplication(null, application);

// Get a configuration
SettingsApi settingsApi = new SettingsApi(config);
Configuration configuration = settingsApi.FindConfigurationWith(
    new Guid("your-config-id"));
string json = configuration.ConfigtoJson();

// Add a setting to a configuration
configuration.AddSetting(setting);
settingsApi.SaveConfiguration(applicationId, null, configuration);

// Find a configuration by name
Configuration namedConfig = settingsApi.FindConfigNamed("MyConfigName");

// Check setting distribution across clients
List<SettingDistribution> dist = settingsApi.GetDistributionList(oid, settingName);

Browser IDE

smartSettings includes a browser-based IDE for managing settings visually. Try the sandbox IDE at settings-demo.smartobjx.com.

Related