# Environment Current `Environment` Configuration holds sub config classes. ```typescript export interface Environment { apis: Apis; application: Application; hmr?: boolean; localization?: { defaultResourceName?: string }; oAuthConfig: AuthConfig; production: boolean; remoteEnv?: RemoteEnv; } ``` ## Apis ```typescript export interface Apis { [key: string]: ApiConfig; default: ApiConfig; } export interface ApiConfig { [key: string]: string; url: string; } ``` Api config has to have a default config and it may have some additional ones for different modules. I.e. you may want to connect to different Apis for different modules. Take a look at example ```json { ... "apis": { "default": { "url": "https://localhost:8080", }, "AbpIdentity": { "url": "https://localhost:9090", } } } ``` When an api from `AbpIdentity` is called, the request will be sent to `"https://localhost:9090"`. Everything else will be sent to `"https://localhost:8080"` ## Application ```typescript export interface Application { name: string; baseUrl?: string; logoUrl?: string; } ``` * `name`: Name of the backend Application. It is also used by `logo.component` if `logoUrl` is not provided. * `logoUrl`: Url of application logo. It is used by `logo.component` * `baseUrl`: [For detailed information](./Multi-Tenancy.md#domain-tenant-resolver) ## Localization You can read about `Localization` [here in detail](./Localization.md) ## OAuthConfig ..... ## RemoteEnvironment To integrate an existing config json into environment, you need to set `remoteEnv` ```typescript export type customMergeFn = ( localEnv: Partial, remoteEnv: any, ) => Config.Environment; export interface RemoteEnv { url: string; mergeStrategy: 'deepmerge' | 'overwrite' | customMergeFn; method?: string; headers?: ABP.Dictionary; } ``` * `url` *: Required. The url to be used to retrieve environment config * `mergeStrategy`: Defines how local and remote environment json will be merged * `deepmerge`: Both local and remote environment json will be merged recursively. If both config has same nested path, remote environment will be prioritized. * `overwrite`: Remote environment will be used and local environment will be ignored. * `customMergeFn`: You can also provide your own merge function as shown in the example. It will take two parameters, `localEnv: Partial` and `remoteEnv` and it needs to return a `Config.Environment` object. * `method`: HTTP method to be used when retrieving environment config. Default: `GET` * `headers`: If extra headers are needed for the request, it can be set through this field.