# Environments

> 📘 This feature requires an **ENTERPRISE** license. If you would like to enable this feature for your Airkit Organization, please contact your Airkit representative or contact [support@airkit.com](mailto:support@airkit.com).

Environments provide the capability to isolate data, [integrations](../integration-guides/custom-integration-guides/setting-up-integrations), [resources](../console/console/console-resources), [APIs](../integration-guides/application-apis), [tokens](../integration-guides/application-apis), and deployments within an organization. Environments serve as a container to organize these resources and allow builders to silo them, ensuring users access to the right resources. Every organization comes pre-provisioned with three default environments: **Development**, **QA**, and **Production**. These environments can then be used to assign resources to their respective environment, which can then be tied to a specific application using [profiles](../building-apps/publishing/profiles-and-deployment-settings). Environment access is also determined by the user role as well.

![](https://3088276961-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC6qMwMGWBgxnN70QsDuH%2Fuploads%2Fgit-blob-3d77c932554d8fd532f705a440b39dca8d5556c5%2Fenvironments-v182-0.png?alt=media)

Below is a list of resources that can be separated by environment:

* Datastores
* Phone Numbers
* URL Domains
* URL Routes
* Email Domains
* Email Addresses
* Embeds
* Encryption keys
* API Tokens
* Standard integrations
* Custom integrations
* Deployments
* Application Profiles
* Applications Activity
* Reporting
* Logs and App Notifiers

### Controlling access to resources (RBAC)

Managing access to resources can be done through role-based access control (RBAC). By assigning specific user roles, you can manage who has access to what resources and what environments they have access to. There are four user roles that you can assign to a user:

* Agent
* Developer
* Admin
* Custom Role

For more information on user roles, see [User Roles](user-roles).

### Assigning a resource to an environment

When creating an integration, resource, or API in the [console](../console/console), builders have the option to select the environment in which it will be accessible in.  For example, when adding an integration, there is the option to select the environment that the integration will be created in.

![](https://3088276961-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC6qMwMGWBgxnN70QsDuH%2Fuploads%2Fgit-blob-4c78d8e4687209510d3eabf1d5ff88dacf6f66ef%2Fenvironments-v182-1.png?alt=media)

By creating the integration in the Development Environment, the integration will only appear as a selectable option if the Development environment is selected in [Settings](../studio/builder-bar/settings).  To select the environment, go to **Settings** > **Global** and select Development in the Environment dropdown.&#x20;

![](https://3088276961-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC6qMwMGWBgxnN70QsDuH%2Fuploads%2Fgit-blob-e47d719116ff42afbc68e8f5c5dea4798a70b688%2Fenvironments-v182-2.png?alt=media)

Then when adding the integration, the integration should be accessible in the list of options.&#x20;

![organizing info](https://3088276961-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC6qMwMGWBgxnN70QsDuH%2Fuploads%2Fgit-blob-e66383d1da8d46e18b2e013e4f8a91cce7982fbe%2Fenvironments-v182-3.png?alt=media)

### Environments and Profiles

It is considered best practice to have your profiles and environments aligned. For example, the development profile should have the Development environment configured, QA profile with the QA environment, and the Production profile with the Production environment. By default, the environments are tied to their corresponding profiles, but you do have the option to change them. If changed, the resources will need to be reselected after switching.
