Configuration Details

A newer version of the Ed-Fi ODS / API is now available. See the Ed-Fi Technology Version Index for a link to the latest version.

Configuration Details

The Ed-Fi ODS / API is configurable in a number of ways. Since the source code is available to licensees, one could argue that everything is configurable. But, what we’re discussing in this section are things like settings and options that do not require a change to the compiled code.

Key configuration points include: OAuth endpoints, Instance type (e.g., Sandbox, Shared Instance), Token timeouts, Enabling / disabling features. See the following sections for more details on important configuration options: 

Required Configuration Settings

Some configuration must be done for every Ed-Fi ODS / API platform instance. Examples of required configurations include database connection strings, SMTP server locations, and similar.

To make it easier for developers to install and run the Ed-Fi ODS / API, the default download from source control is pre-configured with values appropriate for a developer or single-server test instance of the system. 

 

Application

Location

Setting Name

Value

Description

Application

Location

Setting Name

Value

Description

EdFi.Ods.SandboxAdmin

appsettings.json

OAuthUrl

Example: http://site-address:port/oauth

Points to the root of the authorization API in the Ed-Fi ODS / API.

EdFi.Ods.WebApi

appsettings.json

ApiSettings:Mode

Example: Sandbox, SharedInstance, YearSpecific, DistrictSpecific

The component settings for the API. See the following section on Developers' Guide for more information on this setting.

EdFi.Ods.SwaggerUI

appsettings.json

WebApiVersionUrl

Example: http://site-address:port/

Points to the version endpoint in the Ed-Fi ODS / API.

A deployment to a staging or production instance is usually more involved, and requires additional configuration. Required configurations for a production instance can be found in the Deployment section of this documentation.

Optional Configuration Settings

Although this list of settings is not exhaustive, other important and useful optional configuration values include:

Application

Location

Setting Name

Value

Description

Application

Location

Setting Name

Value

Description

EdFi.Ods.SwaggerUI

appsettings.json

SwaggerUIOptions:OAuthConfigObject:ClientId

Example:
rcKsguTICAaBm9PxyUW4i

Optionally provides the value to prefill in the "key" field of auth.

EdFi.Ods.SwaggerUI

appsettings.json

SwaggerUIOptions:OAuthConfigObject:ClientSecret

Example:
t0CklTOfMBGZNPgVQDLHh

Optionally provides the value to prefill in the "secret" field of auth.

EdFi.Ods.SandboxAdmin

appsettings.json

User

Example:

Contents on appsettings.json "User": { "Test Admin": { "Email": "test@ed-fi.org", "Admin": "true", "NamespacePrefixes": [ "uri://ed-fi.org", "uri://gbisd.org" ], "Password": "zSKj8DdR4mQlPp3X2i1ra", "Sandboxes": { "Minimal Demonstration Sandbox": { "Key": "FLqUvMPSoG4ryp7HiRBmX", "Type": "Minimal", "Secret": "bhJfA6qt7iNP3Xd5as9O0", "Refresh": "false" }, "Populated Demonstration Sandbox": { "Key": "rcKsguTICAaBm9PxyUW4i", "Type": "Sample", "Secret": "t0CklTOfMBGZNPgVQDLHh", "Refresh": "false" } } } }

Defines automatically created user accounts and sandboxes. Also configures automatic refreshes of sandboxes to a clean state. Each user entry will be created with the given email/password, and the sandboxes defined underneath it will also be created for the type and key/secret values.

New: Must include the NamespacePrefixes elements, to deploy what namespaces for the associated vendor. This collection is required, and at least one namespace prefix is required. 

 

EdFi.Ods.WebApi

appsettings.json

QueueAutoCreate

Example: 1

Whether or not a message queue should be created if it is not found. For Azure or Active Directory queues, this should be 0.

EdFi.Ods.WebApi

appsettings.json

CommitUploadCommandMessageEndPoint

Example: localhost

The server hosting the message queues.

EdFi.Ods.WebApi

appsettings.json

BearerTokenTimeoutMinutes

Example: 30

The amount of time that an OAuth token remains valid.

EdFi.Ods.WebApi

appsettings.json

SecurityMetadataCacheTimeoutMinutes

Example: 10

The amount of time the security metadata from EdFi_Security database is cached. E.g., if it is set to 10 mins, the claim set changes will reflect in the API at least after 10 mins without needing to recycle API process.

EdFi.Ods.WebApi

appsettings.json

defaultPageSizeLimit

Example: 500

Maximum number of records that can be fetched in a GET request.

EdFi.Ods.WebApi

appsettings.json

ApiSettings:Features:ChangeQueries

true

Enables the Changed Record Queries endpoints (database configuration remains a separate step, see Using the Changed Record Queries).

EdFi.Ods.WebApi

appsettings.json

ApiSettings:Features:OpenApiMetadata

true

Enables the metadata API endpoint, used by Swagger UI. Production deployments should disable this by changing the value to false.

EdFi.Ods.WebApi

appsettings.json

ApiSettings:Features:Composites

true

Enables the Composites API endpoints, including the default Enrollments composite and any custom composites that have been added to the installation.

EdFi.Ods.WebApi

appsettings.json

ApiSettings:Features:Profiles

true

Enables the Profiles endpoints, including the default profiles and any custom profiles that have been added to the installation.

EdFi.Ods.WebApi

appsettings.json

ApiSettings:Features:IdentityManagement

false

Enables the Identity API endpoints.

EdFi.Ods.WebApi

appsettings.json

ApiSettings:Features:Extensions

true

Enables the API endpoints created for all Extensions. An installation that is not customized at all and still has the GrandBend and Sample extensions can disable this feature in production.

EdFi.Ods.WebApi

appsettings.json

ApiSettings:Features:UniqueIdValidation

false

Enables Unique ID System Integration. Must implement IUniqueIdToIdValueMapper and register within the implementation within the WebApi. 

EdFi.Ods.Web.Api

appsettings.json

ApiSettings:Features:TokenInfo

true

Enables the token_info introspective endpoint.

EdFi.Ods.Web.Api

appsettings.json

Plugin:Folder

Example: ../../Plugin

Configures the plugin folder that API looks to deploy extensions dynamically.

EdFi.Ods.Web.Api

appsettings.json

Plugin:Scripts

Example: [ tpdm ]

Configures the script (located in plugin folder by default) responsible for downloading the extension plugins and placing them in the plugin folder.

Environment Configuration

While appsettings.json provides the primary configuration for the ASP.NET Core applications in the ODS / API solution, appsettings.Environment.json can be used to override the settings in appsettings.json. Initdev creates appsettings.Development.json to override settings for development environment. See Configuration in ASP.NET Core for more details. 

Secret Manager 

In development environments ASP.NET Core applications in the ODS / API solution uses secret manager tool to provide a way for storing app secrets away from the projects so that they aren't accidentally checked into source control. This setting overrides appsettings.Development.json. See Safe storage of app secrets in development in ASP.NET Core for more details.