Remote Config Admin API
Overview
Unity Remote Config is a cloud service that allows you to tune your game design without deploying new versions of your application. With Remote Config, you can:
Adapt your game to different types of players.
Tune your game difficulty curve in near real time.
Alter graphic quality based on device to optimize performance.
Roll out new features gradually while monitoring impact.
Tailor game settings to different regions or other player segments.
Run campaign tests comparing colors, styles, prices, etc.
Turn seasonal, holiday, or other time-sensitive events on or off.
Enable or disable features for specific player segments or across the entire user base.
Define Game Overrides that control which players receive what settings updates, and when. Unity manages the delivery and assignment of those settings with minimal impact to performance. No update to your application is necessary. When a player launches your game, Remote Config detects contextual attributes used as game override conditions, based on Unity, the application, the user, or custom criteria that you define. The service then returns customized settings for each player according to the game overrides that apply to them. This allows different players using the same version of your game to have slightly different experiences. It also allows you to understand the impact each experience has on your business.
Limitation
- A configuration can have a max payload size of 5MB
- A string limit is only of 65 535 characters
Download OpenAPI specification:
Create a game override
Create a new game override
Authorizations
ServiceAccount (remote_config.game_overrides.create)
HTTP: ServiceAccount
To get started with authentication, visit the Service Account Authentication section.
HTTP Authorization Scheme: basic
Required scopes: remote_config.game_overrides.create
Request body for "Create a game override"
Media Type:
application/jsonThe Condition is a JEXL expression of contextual data attributes used to define the audience for which you want a Rule to apply.
JEXL Support
- from the Java Expression Language (JEXL) spec.
JexlExpression - are not supported.
JexlScripts
Categories
Remote Config currently supports three attribute categories.
Category | Description |
|---|---|
| Custom developer-defined attributes that describe the user |
| Custom developer-defined attributes that describe the application |
| Predefined attributes (detailed below) |
Custom User ID
When you call in our C# APIs, this will automatically expose the ID you pass in to the attributes.
SetCustomUserIduserExample from C#:
ConfigManager.SetCustomUserID("some-user-id");
Allows you to create a rule condition like:
user.customUserId == "some-user-id"
Predefined unity
attributes
unityAttribute | Type | Description | Example |
|---|---|---|---|
| String | The build number your application is running | |
| String | The version your application is running | |
| String | The name of the cpu processor | |
| Int | The processor frequency in MHz of the device running your app | |
| String | The applicable country. This attribute uses ISO 3166-1 alpha2 country codes | |
| String | The applicable language. This attribute uses ISO 639-1 language codes | |
| String | The operating system version of the device running your app | |
| String | The applicable device or platform (see below) | |
| Int | The time in milliseconds since a session of your app has begun | |
| String | Vendor of the user's graphics card | |
| Int | Amount of ram memory in MB on the device | |
Supported platforms
AndroidiOSLinuxmacOSMetroSamsungTVSwitchTizentvOSWebGLWiiWindows
The percentage of your user base that will adhere to this rule. For values less than 100, Unity randomly assigns the Rule to that percent of your players on a user ID basis. While experiences may differ from player to player, players will have a consistent experience each session.
Code samples for "Create a game override":
Request example
curl -X POST \ -H "Authorization: Basic <YOUR_CREDENTIALS>" \ -H "Content-Type: application/json" \ -d '{ "audience": [ "All" ], "condition": null, "createdAt": "2024-01-01T00:00:00Z", "enabled": false, "endDate": "2020-08-09T17:13:56Z", "environmentId": "string", "id": "string", "kpi": [ "string" ], "name": "string", "priority": 1000, "rolloutPercentage": 100, "startDate": "2019-08-09T17:13:56Z", "updatedAt": "2024-01-01T00:00:00Z", "variants": [ { "content": [ { "type": "settings", "values": [ null ] } ], "name": "string", "weight": 0 } ]}' \ "https://services.api.unity.com/remote-config/v1/projects/{projectId}/campaigns"
Response example
{ "createdAt": "2024-01-01T00:00:00Z", "id": "string"}
Get a single game override
Retrieve a game override
Authorizations
ServiceAccount (remote_config.game_overrides.list)
HTTP: ServiceAccount
To get started with authentication, visit the Service Account Authentication section.
HTTP Authorization Scheme: basic
Required scopes: remote_config.game_overrides.list
Code samples for "Get a single game override":
Request example
curl -X GET \ -H "Authorization: Basic <YOUR_CREDENTIALS>" \ "https://services.api.unity.com/remote-config/v1/projects/{projectId}/campaigns/{id}"
Response example
{ "audience": [ "10c13fd6-927f-4875-8a76-f9ec240c6727" ], "condition": "app.score >= 10", "createdAt": "2024-01-01T00:00:00Z", "description": "This override is a test", "enabled": false, "endDate": "2020-08-09T17:13:56Z", "environmentId": "string", "id": "string", "kpi": [ "string" ], "name": "string", "priority": 1000, "projectId": "string", "rolloutPercentage": 100, "startDate": "2019-08-09T17:13:56Z", "updatedAt": "2024-01-01T00:00:00Z", "variants": [ { "content": [ { "type": "settings", "values": [ null ] } ], "name": "string", "weight": 0 } ]}
Update a single game override
Updates an existing game override
Authorizations
ServiceAccount (remote_config.game_overrides.update)
HTTP: ServiceAccount
To get started with authentication, visit the Service Account Authentication section.
HTTP Authorization Scheme: basic
Required scopes: remote_config.game_overrides.update
Request body for "Update a single game override"
Media Type:
application/jsonThe Condition is a JEXL expression of contextual data attributes used to define the audience for which you want a Rule to apply.
JEXL Support
- from the Java Expression Language (JEXL) spec.
JexlExpression - are not supported.
JexlScripts
Categories
Remote Config currently supports three attribute categories.
Category | Description |
|---|---|
| Custom developer-defined attributes that describe the user |
| Custom developer-defined attributes that describe the application |
| Predefined attributes (detailed below) |
Custom User ID
When you call in our C# APIs, this will automatically expose the ID you pass in to the attributes.
SetCustomUserIduserExample from C#:
ConfigManager.SetCustomUserID("some-user-id");
Allows you to create a rule condition like:
user.customUserId == "some-user-id"
Predefined unity
attributes
unityAttribute | Type | Description | Example |
|---|---|---|---|
| String | The build number your application is running | |
| String | The version your application is running | |
| String | The name of the cpu processor | |
| Int | The processor frequency in MHz of the device running your app | |
| String | The applicable country. This attribute uses ISO 3166-1 alpha2 country codes | |
| String | The applicable language. This attribute uses ISO 639-1 language codes | |
| String | The operating system version of the device running your app | |
| String | The applicable device or platform (see below) | |
| Int | The time in milliseconds since a session of your app has begun | |
| String | Vendor of the user's graphics card | |
| Int | Amount of ram memory in MB on the device | |
Supported platforms
AndroidiOSLinuxmacOSMetroSamsungTVSwitchTizentvOSWebGLWiiWindows
The percentage of your user base that will adhere to this rule. For values less than 100, Unity randomly assigns the Rule to that percent of your players on a user ID basis. While experiences may differ from player to player, players will have a consistent experience each session.
Code samples for "Update a single game override":
Request example
curl -X PUT \ -H "Authorization: Basic <YOUR_CREDENTIALS>" \ -H "Content-Type: application/json" \ -d '{ "audience": [ "All" ], "condition": null, "createdAt": "2024-01-01T00:00:00Z", "enabled": false, "endDate": "2020-08-09T17:13:56Z", "environmentId": "string", "id": "string", "kpi": [ "string" ], "name": "string", "priority": 1000, "rolloutPercentage": 100, "startDate": "2019-08-09T17:13:56Z", "updatedAt": "2024-01-01T00:00:00Z", "variants": [ { "content": [ { "type": "settings", "values": [ null ] } ], "name": "string", "weight": 0 } ]}' \ "https://services.api.unity.com/remote-config/v1/projects/{projectId}/campaigns/{id}"
Response example
Delete a single game override
Deletes existing game override
Authorizations
ServiceAccount (remote_config.game_overrides.delete)
HTTP: ServiceAccount
To get started with authentication, visit the Service Account Authentication section.
HTTP Authorization Scheme: basic
Required scopes: remote_config.game_overrides.delete
Get config with the default environment
Obtain the configs with the default environment 'production' or specified environment id
Authorizations
ServiceAccount (remote_config.configs.list)
HTTP: ServiceAccount
To get started with authentication, visit the Service Account Authentication section.
HTTP Authorization Scheme: basic
Required scopes: remote_config.configs.list
Code samples for "Get config with the default environment":
Request example
curl -X GET \ -H "Authorization: Basic <YOUR_CREDENTIALS>" \ "https://services.api.unity.com/remote-config/v1/projects/{projectId}/configs"
Response example
{ "configs": [ { "createdAt": "2024-01-01T00:00:00Z", "environmentId": "string", "id": "string", "projectId": "string", "type": "settings", "updatedAt": "2024-01-01T00:00:00Z", "value": [ { "key": "string", "type": "string", "value": "string" } ] } ]}
Create Config
Create Config.
Authorizations
ServiceAccount (remote_config.configs.create)
HTTP: ServiceAccount
To get started with authentication, visit the Service Account Authentication section.
HTTP Authorization Scheme: basic
Required scopes: remote_config.configs.create
Code samples for "Create Config":
Request example
curl -X POST \ -H "Authorization: Basic <YOUR_CREDENTIALS>" \ -H "Content-Type: application/json" \ -d '{ "createdAt": "2024-01-01T00:00:00Z", "environmentId": "string", "id": "string", "projectId": "string", "type": "settings", "updatedAt": "2024-01-01T00:00:00Z", "value": [ { "key": "string", "type": "string", "value": "string" } ]}' \ "https://services.api.unity.com/remote-config/v1/projects/{projectId}/configs"
Response example
{ "createdAt": "2024-01-01T00:00:00Z", "id": "string"}
Get All Schemas
Return all schemas for a specific configId
Authorizations
ServiceAccount (remote_config.configs.list)
HTTP: ServiceAccount
To get started with authentication, visit the Service Account Authentication section.
HTTP Authorization Scheme: basic
Required scopes: remote_config.configs.list
Code samples for "Get All Schemas":
Request example
curl -X GET \ -H "Authorization: Basic <YOUR_CREDENTIALS>" \ "https://services.api.unity.com/remote-config/v1/projects/{projectId}/configs/{configId}/schemas"
Response example
{ "schemas": [ { "$id": "#currency:coin", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "count": { "type": "number" }, "name": { "type": "string" } }, "required": [ "name", "count" ], "title": "Currency: coin", "type": "object" } ]}
Create Schema
Create new schema for a specific configId
Authorizations
ServiceAccount (remote_config.configs.create)
HTTP: ServiceAccount
To get started with authentication, visit the Service Account Authentication section.
HTTP Authorization Scheme: basic
Required scopes: remote_config.configs.create
Code samples for "Create Schema":
Request example
curl -X POST \ -H "Authorization: Basic <YOUR_CREDENTIALS>" \ -H "Content-Type: application/json" \ -d '{ "$id": "#currency:coin", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "count": { "type": "number" }, "name": { "type": "string" } }, "required": [ "name", "count" ], "title": "Currency: coin", "type": "object"}' \ "https://services.api.unity.com/remote-config/v1/projects/{projectId}/configs/{configId}/schemas"
Response example
Get Schema
Get a schema
Authorizations
ServiceAccount (remote_config.configs.list)
HTTP: ServiceAccount
To get started with authentication, visit the Service Account Authentication section.
HTTP Authorization Scheme: basic
Required scopes: remote_config.configs.list
Code samples for "Get Schema":
Request example
curl -X GET \ -H "Authorization: Basic <YOUR_CREDENTIALS>" \ "https://services.api.unity.com/remote-config/v1/projects/{projectId}/configs/{configId}/schemas/{id}"
Response example
{ "$id": "#currency:coin", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "count": { "type": "number" }, "name": { "type": "string" } }, "required": [ "name", "count" ], "title": "Currency: coin", "type": "object"}
Delete Schema
Delete a schema
Authorizations
ServiceAccount (remote_config.configs.delete)
HTTP: ServiceAccount
To get started with authentication, visit the Service Account Authentication section.
HTTP Authorization Scheme: basic
Required scopes: remote_config.configs.delete
Get Config
Returns Config for a given ID
Authorizations
ServiceAccount (remote_config.configs.get)
HTTP: ServiceAccount
To get started with authentication, visit the Service Account Authentication section.
HTTP Authorization Scheme: basic
Required scopes: remote_config.configs.get
Code samples for "Get Config":
Request example
curl -X GET \ -H "Authorization: Basic <YOUR_CREDENTIALS>" \ "https://services.api.unity.com/remote-config/v1/projects/{projectId}/configs/{id}"
Response example
{ "createdAt": "2024-01-01T00:00:00Z", "environmentId": "string", "id": "string", "projectId": "string", "type": "settings", "updatedAt": "2024-01-01T00:00:00Z", "value": [ { "key": "string", "type": "string", "value": "string" } ]}
Update Config
Updates the value of an existing Config
Authorizations
ServiceAccount (remote_config.configs.update)
HTTP: ServiceAccount
To get started with authentication, visit the Service Account Authentication section.
HTTP Authorization Scheme: basic
Required scopes: remote_config.configs.update
Code samples for "Update Config":
Request example
curl -X PUT \ -H "Authorization: Basic <YOUR_CREDENTIALS>" \ -H "Content-Type: application/json" \ -d '{ "type": "settings", "value": [ { "key": "string", "type": "string", "value": "string" } ]}' \ "https://services.api.unity.com/remote-config/v1/projects/{projectId}/configs/{id}"
Response example
Delete Config
Deletes an existing Config
Authorizations
ServiceAccount (remote_config.configs.delete)
HTTP: ServiceAccount
To get started with authentication, visit the Service Account Authentication section.
HTTP Authorization Scheme: basic
Required scopes: remote_config.configs.delete
Copy Config Settings
Copies specified settings from a source Config to a destination Config
Authorizations
ServiceAccount (remote_config.configs.update)
HTTP: ServiceAccount
To get started with authentication, visit the Service Account Authentication section.
HTTP Authorization Scheme: basic
Required scopes: remote_config.configs.update
Code samples for "Copy Config Settings":
Request example
curl -X POST \ -H "Authorization: Basic <YOUR_CREDENTIALS>" \ -H "Content-Type: application/json" \ -d '{ "destinationConfigId": "string", "settings": [ "string" ], "sourceConfigId": "string"}' \ "https://services.api.unity.com/remote-config/v1/projects/{projectId}/configs:copyto"
Response example
{ "code": 0, "message": "string", "settings": [ "string" ]}
Get All Environments
Returns the list of environments for a Project.
Authorizations
ServiceAccount (remote_config.configs.list)
HTTP: ServiceAccount
To get started with authentication, visit the Service Account Authentication section.
HTTP Authorization Scheme: basic
Required scopes: remote_config.configs.list
Code samples for "Get All Environments":
Request example
curl -X GET \ -H "Authorization: Basic <YOUR_CREDENTIALS>" \ "https://services.api.unity.com/remote-config/v1/projects/{projectId}/environments"
Response example
{ "environments": [ { "createdAt": "2024-01-01T00:00:00Z", "id": "string", "name": "string", "projectId": "string", "updatedAt": "2024-01-01T00:00:00Z" } ]}
Get all game overrides
Returns all game overrides for a given project and environment
Authorizations
ServiceAccount (remote_config.game_overrides.list)
HTTP: ServiceAccount
To get started with authentication, visit the Service Account Authentication section.
HTTP Authorization Scheme: basic
Required scopes: remote_config.game_overrides.list
Code samples for "Get all game overrides":
Request example
curl -X GET \ -H "Authorization: Basic <YOUR_CREDENTIALS>" \ "https://services.api.unity.com/remote-config/v1/projects/{projectId}/environments/{environmentId}/campaigns"
Response example
{ "campaigns": [ { "audience": [ "10c13fd6-927f-4875-8a76-f9ec240c6727" ], "condition": "app.score >= 10", "createdAt": "2024-01-01T00:00:00Z", "description": "This override is a test", "enabled": false, "endDate": "2020-08-09T17:13:56Z", "environmentId": "string", "id": "string", "kpi": [ "string" ], "name": "string", "priority": 1000, "projectId": "string", "rolloutPercentage": 100, "startDate": "2019-08-09T17:13:56Z", "updatedAt": "2024-01-01T00:00:00Z", "variants": [ { "content": [ null ], "name": "string", "weight": 0 } ] } ]}
Get Environment
Return environment for a given ID
Authorizations
ServiceAccount (remote_config.configs.list)
HTTP: ServiceAccount
To get started with authentication, visit the Service Account Authentication section.
HTTP Authorization Scheme: basic
Required scopes: remote_config.configs.list
Code samples for "Get Environment":
Request example
curl -X GET \ -H "Authorization: Basic <YOUR_CREDENTIALS>" \ "https://services.api.unity.com/remote-config/v1/projects/{projectId}/environments/{id}"
Response example
{ "createdAt": "2024-01-01T00:00:00Z", "id": "string", "name": "string", "projectId": "string", "updatedAt": "2024-01-01T00:00:00Z"}
Get Configs by Environment ID
Returns the list of all configs for a Environment. Currently, the only supported config type is "settings"
Authorizations
ServiceAccount (remote_config.configs.get)
HTTP: ServiceAccount
To get started with authentication, visit the Service Account Authentication section.
HTTP Authorization Scheme: basic
Required scopes: remote_config.configs.get
Code samples for "Get Configs by Environment ID":
Request example
curl -X GET \ -H "Authorization: Basic <YOUR_CREDENTIALS>" \ "https://services.api.unity.com/remote-config/v1/projects/{projectId}/environments/{id}/configs"
Response example
{ "configs": [ { "createdAt": "2024-01-01T00:00:00Z", "environmentId": "string", "id": "string", "projectId": "string", "type": "settings", "updatedAt": "2024-01-01T00:00:00Z", "value": [ { "key": "string", "type": "string", "value": "string" } ] } ]}
Get Config by type
Returns the config specified by the config type
Authorizations
ServiceAccount (remote_config.configs.list)
HTTP: ServiceAccount
To get started with authentication, visit the Service Account Authentication section.
HTTP Authorization Scheme: basic
Required scopes: remote_config.configs.list
Code samples for "Get Config by type":
Request example
curl -X GET \ -H "Authorization: Basic <YOUR_CREDENTIALS>" \ "https://services.api.unity.com/remote-config/v1/projects/{projectId}/environments/{id}/configs/{configType}"
Response example
{ "createdAt": "2024-01-01T00:00:00Z", "environmentId": "string", "id": "string", "projectId": "string", "type": "settings", "updatedAt": "2024-01-01T00:00:00Z", "value": [ { "key": "string", "type": "string", "value": "string" } ]}
Set Default Environment
Set the default environment
Authorizations
ServiceAccount (remote_config.configs.update)
HTTP: ServiceAccount
To get started with authentication, visit the Service Account Authentication section.
HTTP Authorization Scheme: basic
Required scopes: remote_config.configs.update