Business Central Admin Center API - Environments
Environments are the instances of the application that have been set up for the tenant. An instance can be of either a production type or a sandbox type. The environment APIs can be used to:
- Get information about the environments currently set up for the tenant
- Get information about the used storage and allowed quotas
- Create a new environment using sample data or as a sandbox copy of the production environment
- Delete an environment.
Note
Special care should be taken when deleting a production environment as the data will not be recoverable
Get environments and Get environments by application family
Returns a list of all the environments for the tenant.
GET /admin/v2.21/applications/environments
Returns a list of the environments for the specified application family.
GET /admin/v2.21/applications/{applicationFamily}/environments
Route Parameters
applicationFamily
- Family of the environment's application as is. (for example, "BusinessCentral)
Response
Returns a wrapped array of environments.
{
"value":
[
{
"friendlyName": string, // Display name of the environment
"type": string, // Environment type (for example, "Sandbox", "Production")
"name": string, // Environment name, unique within an application family
"countryCode": string, // Country/Region that the environment is deployed in
"applicationFamily": string, // Family of the environment (for example, "BusinessCentral")
"aadTenantId": Guid, // Id of the Microsoft Entra tenant that owns the environment
"applicationVersion": string, // The version of the environment's application
"status": string, // (enum | "NotReady", "Removing", "Preparing", "Active")
"webClientLoginUrl": string, // Url to use to log into the environment,
"webServiceUrl": string, // Url to use to access the environment's service API
"locationName": string, // The Azure location where the environment's data is stored
"platformVersion": string, // The version of the environment's Business Central platform
"ringName": string, // Name of the environment's logical ring group (such as Prod, Preview)
"appInsightsKey": string // The environment's key for Azure Application Insights
"SoftDeletedOn": datetime // The time at which the environment was soft deleted
"HardDeletePendingOn": datetime // The time at which the environment will be permanently deleted
"DeleteReason": string // The reason why the environment was deleted
"AppSourceAppsUpdateCadence": string // The cadence at which installed AppSource Apps are automatically updated with environment updates
}
]
}
Expected Error Codes
applicationTypeDoesNotExist
- the provided value for the application family wasn't found
Get environment by application family and name
Returns the properties for the provided environment name if it exists.
GET /admin/v2.21/applications/{applicationFamily}/environments/{environmentName}
Route Parameters
applicationFamily
- Family of the environment's application (for example, "BusinessCentral")
environmentName
- Name of the targeted environment
Response
Returns a single environment if exists.
{
"friendlyName": string, // Display name of the environment
"type": string, // Environment type (for example, "Sandbox", "Production")
"name": string, // Environment name, unique within an application family
"countryCode": string, // Country/Region that the environment is deployed in
"applicationFamily": string, // Family of the environment (for example, "BusinessCentral")
"aadTenantId": Guid, // Id of the Microsoft Entra tenant that owns the environment
"applicationVersion": string, // The version of the environment's application
"status": string, // (enum | "NotReady", "Removing", "Preparing", "Active")
"webClientLoginUrl": string, // Url to use to log into the environment,
"webServiceUrl": string, // Url to use to access the environment's service API
"locationName": string, // The Azure location where the environment's data is stored
"platformVersion": string, // The version of the environment's Business Central platform
"ringName": string, // Name of the environment's logical ring group (such as Prod, Preview)
"appInsightsKey": string // The environment's key for Azure Application Insights
"SoftDeletedOn": datetime // The time at which the environment was soft deleted
"HardDeletePendingOn": datetime // The time at which the environment will be permanently deleted
"DeleteReason": string // The reason why the environment was deleted
"AppSourceAppsUpdateCadence": string // The cadence at which installed AppSource Apps are automatically updated with environment updates
}
Expected Error Codes
environmentNotFound
- the targeted environment couldn't be found
target: {applicationFamily}/{environmentName}
Create new environment
Creates a new environment with sample data.
Content-Type: application/json
PUT /admin/v2.21/applications/{applicationFamily}/environments/{environmentName}
Route Parameters
applicationFamily
- Family to create the new environment within (for example, "BusinessCentral")
environmentName
- The name of the new environment. See the section below about valid environment names to see what values are allowed.
Note
The Create, Copy, and Delete operations are asynchronous.
With API v2.8 and earlier, the response objects are returned before the underlying operation has completed. The final results of the operation are reflected in the status
field of the environment that the operations affect. In practice this means that polling of the Get Environments
endpoints must be done to determine if the given operation was successful.
With API v2.9 and later, consumers should rely on the status
field of the corresponding EnvironmentOperation
response to monitor the status of the underlying operation. So, to get the updated status of the operation, consumers should poll the Get environment operations for all environments
endpoint rather than Get Environments
and inspect the status
of the relevant operation.
Body
{
"environmentType": string, // The type of environment to create (enum | "Production", "Sandbox")
"countryCode": string, // The country to create the environment within
("ringName": string), // Optional - The logical ring group to create the environment within. Currently only Sandbox type environments may be created in a 'Preview' ring. If not provided then the production ring will be used.
("applicationVersion": Version), // Optional - The version of the application the environment should be created on. If not provided then the latest available version will be used.
}
Note
The values for the countryCode
, ringName
, and applicationVersion
properties should be derived from the API endpoints described in the Available Applications section below.
Response
API v2.9 and later
EnvironmentOperation response with HTTP status code 202 (Accepted) with the following format:
{
"id": "00001111-aaaa-2222-bbbb-3333cccc4444",
"type": "create",
"status": "scheduled", // Will eventually switch to running and then one between succeeded/failed
"aadTenantId": "",
"createdOn": "2021-09-27T08:13:46.65Z",
"startedOn": "2021-09-27T08:13:47.3Z",
"completedOn": "2021-09-27T08:15:02.073Z",
"createdBy": "",
"errorMessage": "",
"parameters": {
"sourceEnvironmentName": "",
"sourceEnvironmentType": "",
"destinationEnvironmentName": "NewEnvironment",
"destinationEnvironmentType": "Production",
"applicationVersion": "19.0.28719.0",
"countryCode": "US"
},
"environmentName": "NewEnvironment",
"environmentType": "Production",
"productFamily": "BusinessCentral"
}
API v2.8 and earlier
Returns HTTP status code 201 (Created) with newly created environment.
{
"friendlyName": string, // Display name of the environment
"type": string, // Environment type (for example, "Sandbox", "Production")
"name": string, // Environment name, unique within an application family
"countryCode": string, // Country/Region that the environment is deployed in
"applicationFamily": string, // Family of the environment (for example, "BusinessCentral")
"aadTenantId": Guid, // Id of the Microsoft Entra tenant that owns the environment
"applicationVersion": string, // The version of the environment's application
"status": string, // (enum | "NotReady", "Removing", "Preparing", "Active")
"webClientLoginUrl": string, // Url to use to log into the environment,
"webServiceUrl": string, // Url to use to access the environment's service API
"locationName": string, // The Azure location where the environment's data is stored
"platformVersion": string, // The version of the environment's Business Central platform
"ringName": string, // Name of the environment's logical ring group (such as Prod, Preview)
"appInsightsKey": string // The environment's key for Azure Application Insights
}
Expected Error Codes
DoesNotExist
- the provided value for the application family wasn't found
destinationApplicationServiceNotFound
- a suitable destination service couldn't be found to put the environment. Occurs if missing or if the tenant doesn't have access to the target application.
invalidInput
- the targeted property is invalid in some way
target: {countryCode} - the country code property can't be null or whitespace
target: {environmentName} - the environment name property can't be null or whitespace
target: {environmentType} - the environment type property can't be null or whitespace, and must be a valid value (Production or Sandbox)
target: {ringName} - attempt to create a production environment on a non-production ring
target: {applicationVersion} - the version property must be a valid version string (major.minor.build.revision)
requestBodyRequired
- the request body must be provided
resourceDoesNotExist
- the targeted property doesn't exist
- target: {ringName} - a ring with the provided name wasn't found
resourceExists
an environment with the same name already exists
environmentNameNotValid
- the environment name can't be a reserved value, must be fewer than 30 characters, must start with an alpha character and consist only of alpha, numerical, underscore (_), or dash (-) characters
cannotCreateNamedEnvironment
- environments with names other than 'Production' or 'Sandbox' aren't supported on the targeted version.
tenantAlreadyProvisioning
- can't create a new environment because another environment is currently in the process of being created.
applicationFamilyNotAccessible
- the calling tenant doesn't have access to the targeted application family and country code
environmentReservationFailed
- another environment within the same application family already has this name
maximumNumberOfEnvironmentsAllowedReached
- the limit on the number of allowed environments of the provided type has been reached
maximumStorageCapacityUsageReached
- the limit of the storage capacity usage has been reached
Copy environment
Creates a new environment with a copy of another environment's data.
Content-Type: application/json
POST /admin/v2.21/applications/{applicationFamily}/environments/{sourceEnvironmentName}/copy
API v2.8 and earlier:
Content-Type: application/json
POST /admin/v2.21/applications/{applicationFamily}/environments/{sourceEnvironmentName}
Route Parameters
applicationFamily
- Family of the source environment's application (for example, "BusinessCentral")
sourceEnvironmentName
- Name of the environment to copy from.
Note
The Create, Copy, and Delete operations are asynchronous.
With API v2.8 and earlier, the response objects are returned before the underlying operation has completed. The final results of the operation are reflected in the status
field of the environment that the operations affect. In practice this means that polling of the Get Environments
endpoints must be done to determine if the given operation was successful.
With API v2.9 and later, consumers should rely on the status
field of the corresponding EnvironmentOperation
response to monitor the status of the underlying operation. So, to get the updated status of the operation, consumers should poll the Get environment operations for all environments
endpoint rather than Get Environments
and inspect the status
of the relevant operation.
Body
{
"environmentName": string, // The name of the new environment.
"type": string // The type of environment to create. With API v2.8 and earlier, only the value "Sandbox" is supported.
}
Response
API v2.9 and later
EnvironmentOperation response with HTTP status code 202 (Accepted) with the following format:
{
"id": "00001111-aaaa-2222-bbbb-3333cccc4444",
"type": "copy",
"status": "scheduled", // Will eventually switch to running and then one between succeeded/failed
"aadTenantId": "",
"createdOn": "2021-09-27T08:13:46.65Z",
"startedOn": "2021-09-27T08:13:47.3Z",
"completedOn": "2021-09-27T08:15:02.073Z",
"createdBy": "",
"errorMessage": "",
"parameters": {
"sourceEnvironmentName": "SourceEnvironment",
"sourceEnvironmentType": "Production",
"destinationEnvironmentName": "NewEnvironment",
"destinationEnvironmentType": "Sandbox",
"applicationVersion": "19.0.28719.0",
"countryCode": "US"
},
"environmentName": "NewEnvironment",
"environmentType": "sandbox",
"productFamily": "BusinessCentral"
}
API v2.8 and earlier
Returns HTTP status code 201 (Created) with newly copied environment.
{
"friendlyName": string, // Display name of the environment
"type": string, // Environment type (for example, "Sandbox", "Production")
"name": string, // Environment name, unique within an application family
"countryCode": string, // Country/Region that the environment is deployed in
"applicationFamily": string, // Family of the environment (for example, "BusinessCentral")
"aadTenantId": Guid, // Id of the Microsoft Entra tenant that owns the environment
"applicationVersion": string, // The version of the environment's application
"status": string, // (enum | "NotReady", "Removing", "Preparing", "Active")
"webClientLoginUrl": string, // Url to use to log into the environment,
"webServiceUrl": string, // Url to use to access the environment's service API
"locationName": string, // The Azure location where the environment's data is stored
"platformVersion": string, // The version of the environment's Business Central platform
"ringName": string, // Name of the environment's logical ring group (such as Prod, Preview)
"appInsightsKey": string // The environment's key for Azure Application Insights
}
Expected Error Codes
applicationTypeDoesNotExist
- the provided value for the application family wasn't found
destinationApplicationServiceNotFound
- a suitable destination service couldn't be found to put the environment. Occurs if missing or if tenant doesn't have access rights to the target application.
environmentNotFound
- the targeted environment couldn't be found
- target: {applicationFamily}/{sourceEnvironmentName}```
invalidInput
- the targeted property is invalid in some way
target: {environmentName} - the environment name property can't be null or whitespace```
target: {type} - the type property can't be null or whitespace, and must be a valid value (Currently only Sandbox)```
requestBodyRequired
- the request body must be provided
resourceExists
an environment with the same name already exists
environmentNameNotValid
- the environment name can't be a reserved value, must be fewer than 30 characters, must start with an alpha character and consist only of alpha, numerical, underscore (_), or dash (-) characters
cannotCreateNamedEnvironment
- environments with names other than 'Production' or 'Sandbox' aren't supported on the targeted version.
tenantAlreadyProvisioning
- can't create a copy of an environment because another environment is currently in the process of being created.
conflictingDeveloperExtensions
- The source environment contains 'uploaded' extensions that are already published to the destination service as 'developer' extensions. This condition will cause conflicts.
extensionData:
{
"conflictingExtensions": [{
"appId": guid, // The id of the conflicting extension
"name": string, // The name of the conflicting extension
"publisher": string, // The name of the person or group who published the conflicting extension
"version": string, // The version of the conflicting extension
"developerEnvironmentName": string // The name of the environment if the conflicting extension exists in another environment owned by the tenant requesting the copy operation
}],
"sameAadTenant": bool, // Indicates if the conflicts occur on an environment that is owned by the same tenant that is requesting the copy operation
}
environmentReservationFailed
- another environment within the same application family already has the same name
maximumNumberOfEnvironmentsAllowedReached
- the limit on the number of allowed environments of the provided type has been reached
maximumStorageCapacityUsageReached
- the limit of the storage capacity usage has been reached
Delete environment
Deletes the specified environment. This operation soft deletes the environment, which means it's retained for fourteen days during which time it can be recovered. For more information, about environment deletion and recovery, go to Delete and recover environments. If the specified environment has the status Creating Failed
or Removing Failed
, the environment won't be retained and will be permanently deleted immediately (hard delete).
DELETE /admin/v2.21/applications/{applicationFamily}/environments/{environmentName}
Route Parameters
applicationFamily
- Family of the environment's application. (for example "BusinessCentral")
environmentName
- Name of the environment to delete.
Note
The Create, Copy, and Delete operations are asynchronous.
With API v2.8 and earlier, the response objects are returned before the underlying operation has completed. The final results of the operation are reflected in the status
field of the environment that the operations affect. In practice this means that polling of the Get Environments
endpoints must be done to determine if the given operation was successful.
With API v2.9 and later, consumers should rely on the status
field of the corresponding EnvironmentOperation
response to monitor the status of the underlying operation. So, to get the updated status of the operation, consumers should poll the Get environment operations for all environments
endpoint rather than Get Environments
and inspect the status
of the relevant operation.
Response
For soft delete in API v2.18 and later
EnvironmentOperation response with HTTP status code 202 (Accepted) with the following format:
{
"id": "8924140b-0da8-4bbb-8a4f-dac047944e72",
"type": "softDelete",
"status": "scheduled", // Will eventually switch to running and then one between succeeded/failed
"aadTenantId": "",
"createdOn": "2021-09-27T08:13:46.65Z",
"startedOn": "2021-09-27T08:13:47.3Z",
"completedOn": "2021-09-27T08:15:02.073Z",
"createdBy": "",
"errorMessage": "",
"parameters": {
"softDeletedOn": "timestamp",
"hardDeletePendingOn": "timestamp",
"deleteReason": "requestedByAdmin"
},
"environmentName": " EnvironmentToDelete",
"environmentType": "sandbox",
"productFamily": "BusinessCentral"
}
For delete in API v2.9 to v2.17 and for hard delete in v2.18 and later
EnvironmentOperation response with HTTP status code 202 (Accepted) with the following format:
{
"id": "8924140b-0da8-4bbb-8a4f-dac047944e72",
"type": "delete",
"status": "scheduled", // Will eventually switch to running and then one between succeeded/failed
"aadTenantId": "",
"createdOn": "2021-09-27T08:13:46.65Z",
"startedOn": "2021-09-27T08:13:47.3Z",
"completedOn": "2021-09-27T08:15:02.073Z",
"createdBy": "",
"errorMessage": "",
"parameters": {
"environmentName": "EnvironmentToDelete",
"environmentType": "sandbox",
"productFamily": "BusinessCentral",
"countryCode": "US",
"applicationVersion": "19.0.28719.0"
},
"environmentName": " EnvironmentToDelete",
"environmentType": "sandbox",
"productFamily": "BusinessCentral"
}
API v2.8 and earlier
Returns empty HTTP status code 202 (Accepted).
Expected Error Codes
invalidStatusCannotDeleteTenant
- can't delete the environment in its current state
tenantDeletionInProgress
- environment is already in the process of being deleted
ambiguousRequest
- multiple environments with the same name were found
environmentNotFound
- the targeted environment couldn't be found
- target: {applicationFamily}/{environmentName}
Recover environment
INTRODUCED IN: API version 2.18
Recovers a soft-deleted environment. For more information, about environment deletion and recovery, go to Delete and recover environments.
POST /admin/v2.21/applications/{applicationFamily}/environments/{environmentName}/recover
Route Parameters
applicationFamily
- Family of the environment's application. (for example "BusinessCentral")
environmentName
- Name of the environment to recover.
Response
EnvironmentOperation response with HTTP status code 202 (Accepted) with the following format:
{
"id": "8924140b-0da8-4bbb-8a4f-dac047944e72",
"type": "recover",
"status": "scheduled", // Will eventually switch to running and then one between succeeded/failed
"aadTenantId": "",
"createdOn": "2023-02-10T08:13:46.65Z",
"startedOn": "2023-02-10T08:13:47.3Z",
"completedOn": "2023-02-10T08:15:02.073Z",
"createdBy": "",
"errorMessage": "",
"parameters": {
"recoveryReason": "requestedByAdmin"
},
"environmentName": " EnvironmentToRecover",
"environmentType": "sandbox",
"productFamily": "BusinessCentral"
}
Expected Error Codes
deletedEnvironmentRecoveryInProgress
- the environment is already being recovered.
invalidStatusCannotRecoverDeletedEnvironment
- can't recover the environment in its current state.
Rename environment
INTRODUCED IN: API version 2.3
Schedules a rename operation on an environment.
Content-Type: application/json
POST /admin/v2.21/applications/{applicationFamily}/environments/{environmentName}/rename
Routing parameters
applicationFamily
- Family of the environment's application (for example, "BusinessCentral").
environmentName
- Name of the environment to rename.
Body
{
"NewEnvironmentName": "sandbox"
}
Response
202 Accepted with body. Follows the general "Operations" format, but with specific operation parameters
{
"id": "00001111-aaaa-2222-bbbb-3333cccc4444",
"type": "environmentRename", // Operation type
"status": "scheduled",
"aadTenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"createdOn": "2021-04-22T12:29:06.668254Z",
"createdBy": "[email protected]",
"errorMessage": "",
"parameters": { // Operation-specific parameters
"oldEnvironmentName": "prod-1", // The old name of the environment
"newEnvironmentName": "prod-2" // The new name of the environment (the target name)
}
}
Expected Error Codes
Follows the general "Error response" format with no operation-specific error codes.
Restore environment
INTRODUCED IN: API version 2.4
Schedules a restore operation an existing environment from a time in the past.
Content-Type: application/json
POST /admin/v2.21/applications/{applicationFamily}/environments/{environmentName}/restore
Routing parameters
applicationFamily
- Family of the environment's application (for example, "BusinessCentral").
environmentName
- Name of the environment to restore.
Body
{
"EnvironmentName": "x-restored", // Mandatory. The name of the new environment that will be created as the result of the resore operation.
"EnvironmentType": "production", // Mandatory. The type of the new environment.
"PointInTime": "2021-04-22T20:00:00Z", // Mandatory. The point in time to which to restore the environment. Must be in ISO 8601 format in UTC.
"SkipInstallingPTEs": true, // Optional, default is false. Used to uninstall PTEs on the environment created as part of the restore.
"SkipInstallingThirdPartyGlobalApps": true, // Optional, default is false. Used to uninstall all third-party AppSource apps from the created environment as part of the restore.
"SkipEnvironmentCleanup": true // Optional, default is false. Used to skip execution of codeunits that clear up selected tables and disable selected setups to avoid unexpected behavior of integrations with external systems.
}
Response
202 Accepted with body. Follows the general "Operations" format, but with specific operation parameters.
{
"id": "00001111-aaaa-2222-bbbb-3333cccc4444", // Operation ID
"type": "pitRestore", // Operation type
"status": "queued", // Status
"aadTenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"createdOn": "2021-04-23T09:41:28.8300669Z",
"createdBy": "[email protected]",
"errorMessage": "",
"parameters": { // Parameters mimic the same from the request body
"environmentName": "x-restored",
"environmentType": "Production",
"restorePointInTime": "2021-04-22T20:00:00Z"
}
}
Expected Error Codes
Follows the general "Error response" format, but with specific error codes.
Operation-specific error codes:
PitRestoreFailed
- the restore operation failed
Get available restore periods
INTRODUCED IN: API version 2.4
Returns an ordered list of available restore periods.
GET applications/{applicationType}/environments/{environmentName}/availableRestorePeriods
Response
200 OK with body. Body represents an ordered list of available restore periods that are non-overlapping and sorted in ascending order by period start date-time. If there are no available restore periods, the list will be empty. correspondingApplicationPackageVersion indicates the Application version that the environment will be restored to.
{
"value": [
{
"from": "2021-01-25T14:57:04.967Z",
"to": "2021-01-25T21:06:17.737Z",
"correspondingApplicationPackageVersion": "21.4.0.0"
},
{
"from": "2021-01-25T21:14:48Z",
"to": "2021-01-27T14:33:15.0007416Z",
"correspondingApplicationPackageVersion": "21.5.0.0"
}
]
}
Link Power Platform environment
INTRODUCED IN: API version 2.21
Links the Business Central environment to a Power Platform environment. The Business Central environment must be linked to a Power Platform environment of the same type (i.e. Production or Sandbox) and in the same Azure Geo.
Note
This API endpoint is not supported for service-to-service authentication using Microsoft Entra apps.
POST /admin/v2.21/bap/applications/{applicationFamily}/environments/{environmentName}/linkEnvironment?powerPlatformEnvironmentId={id}
Routing parameters
applicationFamily
- Family of the environment's application (for example, "BusinessCentral").
environmentName
- Name of the Business Central environment to link.
id
- ID of the Power Platform environment to link the Business Central environment to.
Response
200 OK.
Expected Error Codes
BadArgument
- Occurs when the environments can not be linked, for example when either environment is in an inactive state or already linked to another environment, when the environment type or Azure Geo do not match, or when the environment does not exist.
Forbidden
- Occurs when the user or application used to authenticate does not have the required permissions.
Unlink Power Platform environment
INTRODUCED IN: API version 2.21
Unlinks the Business Central environment from a linked Power Platform environment.
Note
This API endpoint is not supported for service-to-service authentication using Microsoft Entra apps.
POST /admin/v2.21/bap/applications/{applicationFamily}/environments/{environmentName}/unlinkEnvironment?powerPlatformEnvironmentId={id}
Routing parameters
applicationFamily
- Family of the environment's application (for example, "BusinessCentral").
environmentName
- Name of the Business Central environment to unlink.
id
- ID of the Power Platform environment to unlink the Business Central environment from.
Response
200 OK.
Response
BadArgument
- Occurs when the Business Central environment is not linked to a Power Platform environment.
Get used storage of an environment by application family and name
Returns used storage properties for the provided environment name if it exists.
GET /admin/v2.21/applications/{applicationFamily}/environments/{environmentName}/usedstorage
Route Parameters
applicationFamily
- Family of the environment's application (for example, "BusinessCentral")
environmentName
- Name of the targeted environment
Response
Returns used storage information of a single environment if exists.
{
"environmentType": string, // Environment type (for example, "Sandbox", "Production")
"environmentName": string, // Environment name, unique within an application family
"applicationFamily": string, // Family of the environment (for example, "BusinessCentral")
"databaseStorageInKilobytes": int // Used database storage in kilobytes
}
Note
If an error occurs when calculating database storage, the corresponding property will be -1.
Expected Error Codes
environmentNotFound
- the targeted environment couldn't be found
target: {applicationFamily}/{environmentName}
Get used storage for all environments
Returns a list of used storage objects for all the environments.
GET /admin/v2.21/environments/usedstorage
Response
Returns a wrapped array of used storage objects.
{
"value":
[
{
"environmentType": string, // Environment type (for example, "Sandbox", "Production")
"environmentName": string, // Environment name, unique within an application family
"applicationFamily": string, // Family of the environment (for example, "BusinessCentral")
"databaseStorageInKilobytes": int // Used database storage in kilobytes
}
]
}
Get allowed quotas
Returns different types of quotas and their limits.
GET /admin/v2.21/environments/quotas
Response
Returns quotas object.
{
"environmentsCount":
{
"production": int, // Maximum allowed number of production environments
"sandbox": int // Maximum allowed number of sandbox environments
}
"storageInKilobytes":
{
"default": int, // Amount of storage allowed by default
"userLicenses": int, // Amount of storage allowed based on the number of user licenses
"additionalCapacity": int, // Amount of storage allowed based on purchased capacity add-ons
"total": int // Total amount of allowed storage
}
}
Get environment operations
INTRODUCED IN: API version 2.6
Gets the following operations that occurred on an environment.
GET /admin/v2.21/environments/{environmentName}/operations
Operation types
Data is returned for the following operation types:
Type | Description | More information |
---|---|---|
Copy3 | An environment was created from a copy of another environment. | Copy a Production or Sandbox Environment in the Admin Center Copy Endpoint |
Create3 | A new environment was created | Create Environment in Admin Center Create Endpoint |
Delete2 | An environment was permanently deleted. | Delete and Recover Environments in Admin Center Delete Endpoint |
EnvironmentAppHotfix1 | App was hotfixed by using the App Management API. | App Management API |
EnvironmentAppUpdate1 | App was updated either by the Admin Center or API update endpoint. | Update an App in Admin Center Update Endpoint |
EnvironmentAppInstall1 | App was installed by using the tenant's Extension Management page or the API install endpoint. | Extension Management Page Install Endpoint |
EnvironmentAppUninstall1 | App was uninstalled by using the tenant's Extension Management page or the API uninstall endpoint. | Extension Management Page Uninstall Endpoint |
EnvironmentRename | Environment was renamed by using the Admin Center | Rename an Environment Rename Endpoint |
Modify5 | Records the following operations: Set update window Set Application Insights key Set security group Clear security group Reschedule update Set access with Microsoft 365 licenses6 |
Manage updates in Admin Center Manage access using Microsoft Entra groups in Admin Center Manage access with Microsoft 365 licenses in Admin Center |
MoveToAnotherAadTenant | An environment was moved to another Microsoft Entra organization by using the Admin Center | Move an Environment |
PitRestore | Environment was restored by using the Admin Center | Restoring an Environment |
Recover7 | A deleted environment was recovered. | Delete and Recover Environments in Admin Center Delete Endpoint |
Restart4 | An environment was restarted. | Restart Environment |
SoftDelete7 | An environment was soft deleted. | Delete and Recover Environments in Admin Center Delete Endpoint |
Update5 | Records a long-running background operation that occurs when an environment is updated to a newer version. |
1 These operations are only supported with API version 2.6 and later. For these operations, the data returned is the same as for Get App Operations, but in a different format.
2 These operations are only supported with API version 2.8 and later.
3 These operations are only supported with API version 2.9 and later.
4 These operations are only supported with API version 2.10 and later.
5 These operations are only supported with API version 2.11 and later.
6 These operations are only supported with API version 2.12 and later.
7 These operations are only supported with API version 2.17 and later.
Route Parameters
applicationType
- Family of the environment's application (for example, "BusinessCentral")
environmentName
- Name of the targeted environment
Response
Example 200 OK
response:
{
"value": [
{
"id": "552d3cb2-144e-4195-9a92-1043c4f483e9", // Id of the operation used for tracking
"type": "environmentAppInstall", // Type of operation
"status": "succeeded", // Status of operation (enum | "Queued", "Scheduled", "Running", "Succeeded", "Failed", "Canceled", "Skipped")
"aadTenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee", // AAD tenant ID for which the operation was executed
"createdOn": "2021-03-22T15:45:46.537Z", // Date and time the request was created
"errorMessage": "", // Error message for failed operations
"parameters": { // Additional parameters for the operation, specific to every operation type
"appId": "44445555-eeee-6666-ffff-7777aaaa8888",
"targetAppVersion": "17.0.3.0",
"countryCode": "US",
"allowPreviewVersion": true,
"ignoreUpgradeWindow": true,
"acceptIsvEula": true,
"allowDependencyUpdate": true,
"environmentName": "Production",
"environmentType": "Production",
"productFamily": "BusinessCentral"
}
},
{
"id": "5fe4ac38-a523-4c1f-80db-acd2cf848c09",
"type": "environmentRename",
"status": "succeeded",
"aadTenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"createdOn": "2021-03-16T18:57:36.223Z",
"startedOn": "2021-03-16T18:57:39.053Z",
"completedOn": "2021-03-16T18:57:47.867Z",
"createdBy": "",
"errorMessage": "",
"parameters": {
"oldEnvironmentName": "Production",
"newEnvironmentName": "Production-deprecated",
"environmentName": "Production",
"environmentType": "Production",
"productFamily": "BusinessCentral"
}
}
]
}
"environmentName"
, "environmentType"
, and "productFamily"
are only included in version 2.7 and later.
Get operations on all environments
INTRODUCED IN: API version 2.7
Gets the operations that occurred on all environments.
GET /admin/v2.21/applications/{applicationType}/environments/operations
Operation types
See Operation Types.
Route Parameters
applicationType
- Family of the environment's application (for example, "BusinessCentral")
Response
Example 200 OK
response:
{
"value": [
{
"id": "552d3cb2-144e-4195-9a92-1043c4f483e9", // Id of the operation used for tracking
"type": "environmentAppInstall", // Type of operation
"status": "succeeded", // Status of operation (enum | "Queued", "Scheduled", "Running", "Succeeded", "Failed", "Canceled", "Skipped")
"aadTenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee", // AAD tenant ID for which the operation was executed
"createdOn": "2021-03-22T15:45:46.537Z", // Date and time the request was created
"errorMessage": "", // Error message for failed operations
"parameters": { // Additional parameters for the operation, specific to every operation type
"appId": "44445555-eeee-6666-ffff-7777aaaa8888",
"targetAppVersion": "17.0.3.0",
"countryCode": "US",
"allowPreviewVersion": true,
"ignoreUpgradeWindow": true,
"acceptIsvEula": true,
"allowDependencyUpdate": true,
"environmentName": "Sandbox",
"environmentType": "Sandbox",
"productFamily": "BusinessCentral"
}
},
{
"id": "5fe4ac38-a523-4c1f-80db-acd2cf848c09",
"type": "environmentRename",
"status": "succeeded",
"aadTenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"createdOn": "2021-03-16T18:57:36.223Z",
"startedOn": "2021-03-16T18:57:39.053Z",
"completedOn": "2021-03-16T18:57:47.867Z",
"createdBy": "",
"errorMessage": "",
"parameters": {
"oldEnvironmentName": "Production",
"newEnvironmentName": "Production-deprecated",
"environmentName": "Production",
"environmentType": "Production",
"productFamily": "BusinessCentral"
}
}
]
}
Related information
The Business Central Administration Center API
Manage Apps
Managing Production and Sandbox Environments in the Admin Center
Microsoft Dynamics 365 Business Central Server Administration Tool