Partilhar via


Projetos Microsoft.DevCenter

Definição de recursos do bíceps

O tipo de recurso de projetos pode ser implantado com operações que visam:

Para obter uma lista de propriedades alteradas em cada versão da API, consulte log de alterações.

Formato do recurso

Para criar um recurso Microsoft.DevCenter/projects, adicione o seguinte Bicep ao seu modelo.

resource symbolicname 'Microsoft.DevCenter/projects@2025-10-01-preview' = {
  scope: resourceSymbolicName or scope
  identity: {
    type: 'string'
    userAssignedIdentities: {
      {customized property}: {}
    }
  }
  location: 'string'
  name: 'string'
  properties: {
    assignedGroups: [
      {
        objectId: 'string'
        scope: 'string'
      }
    ]
    azureAiServicesSettings: {
      azureAiServicesMode: 'string'
    }
    catalogSettings: {
      catalogItemSyncTypes: [
        'string'
      ]
    }
    customizationSettings: {
      identities: [
        {
          identityResourceId: 'string'
          identityType: 'string'
        }
      ]
      userCustomizationsEnableStatus: 'string'
    }
    description: 'string'
    devBoxScheduleDeleteSettings: {
      cancelOnConnectEnableStatus: 'string'
      deleteMode: 'string'
      gracePeriod: 'string'
      inactiveThreshold: 'string'
    }
    devCenterId: 'string'
    displayName: 'string'
    maxDevBoxesPerUser: int
    serverlessGpuSessionsSettings: {
      maxConcurrentSessionsPerProject: int
      serverlessGpuSessionsMode: 'string'
    }
    workspaceStorageSettings: {
      workspaceStorageMode: 'string'
    }
  }
  tags: {
    {customized property}: 'string'
  }
}

Valores de propriedade

Microsoft.DevCenter/projects

Name Description Value
identidade Propriedades de identidade gerenciadas. ManagedServiceIdentity
localização A geolocalização onde o recurso vive string (obrigatório)
name O nome do recurso string

Constraints:
Comprimento mínimo = 3
Comprimento máximo = 63
Padrão = ^[a-zA-Z0-9][a-zA-Z0-9-_.]{2,62}$ (obrigatório)
properties Propriedades de um projeto. ProjectProperties
âmbito Use ao criar um recurso em um escopo diferente do escopo de implantação. Defina essa propriedade como o nome simbólico de um recurso para aplicar o recurso de extensão .
tags Etiquetas de recursos Dicionário de nomes e valores de tags. Consulte Tags em modelos

Grupo Atribuído

Name Description Value
objectId O GUID (ID do objeto do grupo Entra). string

Constraints:
Comprimento mínimo = 36
Comprimento máximo = 36
Padrão = ^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$
âmbito O âmbito da atribuição. 'DevBox'

AzureAiServicesSettings

Name Description Value
azureAiServicesMode A propriedade indica se os serviços de IA do Azure estão habilitados. 'AutoDeploy'
'Disabled'

DevBoxScheduleDeleteSettings

Name Description Value
cancelOnConnectEnableStatus Indica se a exclusão agendada deve ser cancelada quando um usuário se conecta à caixa de desenvolvimento. 'Disabled'
'Enabled'
deleteMode Indica o modo de exclusão para Dev Boxes dentro deste projeto. 'Auto'
'Manual'
gracePeriod ISO8601 duração necessária para que a caixa de desenvolvimento seja marcada para exclusão antes de ser excluída. ISO8601 formato PT[n]H[n]M[n]S. cadeia (de caracteres)
inactiveThreshold ISO8601 duração necessária para que a caixa de desenvolvimento não fique inativa antes de ser agendada para exclusão. ISO8601 formato PT[n]H[n]M[n]S. cadeia (de caracteres)

ManagedServiceIdentity

Name Description Value
tipo Tipo de identidade de serviço gerenciado (onde os tipos SystemAssigned e UserAssigned são permitidos). 'None'
'SystemAssigned'
'SystemAssigned, UserAssigned'
'UserAssigned' (obrigatório)
userAssignedIdentities O conjunto de identidades atribuídas pelo usuário associadas ao recurso. As chaves do dicionário userAssignedIdentities serão ids de recurso ARM no formato: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Os valores de dicionário podem ser objetos vazios ({}) em solicitações. UserAssignedIdentities

ProjectCatalogSettings

Name Description Value
catalogItemSyncTypes Indica os tipos de item de catálogo que podem ser sincronizados. Matriz de cadeia de caracteres contendo qualquer uma das:
'EnvironmentDefinition'
'ImageDefinition'

ProjectCustomizationManagedIdentity

Name Description Value
identityResourceId Ex: /subscriptions/fa5fc227-a624-475e-b696-cdd604c735bc/resourceGroups/<grupo de recursos>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myId. Mutuamente exclusivo com identityType systemAssignedIdentity. cadeia (de caracteres)
identityType Os valores podem ser systemAssignedIdentity ou userAssignedIdentity. 'systemAssignedIdentity'
'userAssignedIdentity'

ProjectCustomizationSettings

Name Description Value
identities As identidades que podem ser usadas em cenários de personalização; por exemplo, para clonar um repositório. ProjectCustomizationManagedIdentity[]
userCustomizationsEnableStatus Indica se as personalizações do usuário estão habilitadas. 'Disabled'
'Enabled'

ProjectProperties

Name Description Value
assignedGroups Lista de atribuições de grupo do Entra ID associadas a este projeto. Grupo atribuído[]
azureAiServicesSettings Indica se os serviços de IA do Azure estão habilitados para um projeto. AzureAiServicesSettings
catalogSettings Configurações a serem usadas ao associar um projeto a um catálogo. ProjectCatalogSettings
customizationSettings Configurações a serem usadas para personalizações. ProjectCustomizationSettings
description Descrição do projeto. cadeia (de caracteres)
devBoxScheduleDeleteSettings Dev Box Schedule Delete configurações. DevBoxScheduleDeleteSettings
devCenterId ID do recurso de um DevCenter associado. cadeia (de caracteres)
displayName O nome para exibição do projeto. cadeia (de caracteres)
maxDevBoxesPerUser Quando especificado, limita o número máximo de Caixas de Desenvolvimento que um único usuário pode criar em todos os pools do projeto. Isso não terá efeito nas Caixas de Desenvolvimento existentes quando reduzidas. int

Constraints:
Valor mínimo = 0
serverlessGpuSessionsSettings Configurações a serem usadas para GPU sem servidor. ServerlessGpuSessionsSettings
workspaceStorageSettings Configurações a serem usadas para armazenamento de espaço de trabalho. WorkspaceStorageSettings

ServerlessGpuSessionsSettings

Name Description Value
maxConcurrentSessionsPerProject Quando especificado, limita o número máximo de sessões simultâneas em todos os pools do projeto. int

Constraints:
Valor mínimo = 1
serverlessGpuSessionsMode A propriedade indica se o acesso à GPU sem servidor está habilitado no projeto. 'AutoDeploy'
'Disabled'

TrackedResourceTags

Name Description Value

UserAssignedIdentities

Name Description Value

UserAssignedIdentity

Name Description Value

WorkspaceStorageSettings

Name Description Value
workspaceStorageMode Indica se o armazenamento do espaço de trabalho está habilitado. 'AutoDeploy'
'Disabled'

Exemplos de uso

Módulos verificados do Azure

Os seguintes de Módulos Verificados do Azure podem ser usados para implantar esse tipo de recurso.

Módulo Description
Projeto Centro de Desenvolvimento Módulo de recursos do AVM para o projeto do Centro de Desenvolvimento

Exemplos de início rápido do Azure

Os seguintes modelos início rápido do Azure contêm exemplos de Bicep para implantar esse tipo de recurso.

Arquivo Bicep Description
de serviço Configurar Ambientes de Implantação Este modelo fornece uma maneira de configurar ambientes de implantação.
Configurar o serviço Caixa de Desenvolvimento Este modelo criaria todos os recursos de administração da Caixa de Desenvolvimento de acordo com o guia de início rápido da Caixa de Desenvolvimento (/azure/dev-box/quickstart-create-dev-box). Você pode visualizar todos os recursos criados ou ir diretamente para DevPortal.microsoft.com para criar sua primeira Caixa de Desenvolvimento.
Implantar o Serviço de Caixa de Desenvolvimento Este modelo fornece uma maneira de configurar todos os recursos necessários para criar uma Caixa de Desenvolvimento.
Implantar o Dev Box Service com de imagem interna Este modelo fornece uma maneira de implantar um serviço Dev Box com imagem interna.

Definição de recurso de modelo ARM

O tipo de recurso de projetos pode ser implantado com operações que visam:

Para obter uma lista de propriedades alteradas em cada versão da API, consulte log de alterações.

Formato do recurso

Para criar um recurso Microsoft.DevCenter/projects, adicione o seguinte JSON ao seu modelo.

{
  "type": "Microsoft.DevCenter/projects",
  "apiVersion": "2025-10-01-preview",
  "name": "string",
  "identity": {
    "type": "string",
    "userAssignedIdentities": {
      "{customized property}": {
      }
    }
  },
  "location": "string",
  "properties": {
    "assignedGroups": [
      {
        "objectId": "string",
        "scope": "string"
      }
    ],
    "azureAiServicesSettings": {
      "azureAiServicesMode": "string"
    },
    "catalogSettings": {
      "catalogItemSyncTypes": [ "string" ]
    },
    "customizationSettings": {
      "identities": [
        {
          "identityResourceId": "string",
          "identityType": "string"
        }
      ],
      "userCustomizationsEnableStatus": "string"
    },
    "description": "string",
    "devBoxScheduleDeleteSettings": {
      "cancelOnConnectEnableStatus": "string",
      "deleteMode": "string",
      "gracePeriod": "string",
      "inactiveThreshold": "string"
    },
    "devCenterId": "string",
    "displayName": "string",
    "maxDevBoxesPerUser": "int",
    "serverlessGpuSessionsSettings": {
      "maxConcurrentSessionsPerProject": "int",
      "serverlessGpuSessionsMode": "string"
    },
    "workspaceStorageSettings": {
      "workspaceStorageMode": "string"
    }
  },
  "tags": {
    "{customized property}": "string"
  }
}

Valores de propriedade

Microsoft.DevCenter/projects

Name Description Value
apiVersion A versão api '2025-10-01-pré-visualização'
identidade Propriedades de identidade gerenciadas. ManagedServiceIdentity
localização A geolocalização onde o recurso vive string (obrigatório)
name O nome do recurso string

Constraints:
Comprimento mínimo = 3
Comprimento máximo = 63
Padrão = ^[a-zA-Z0-9][a-zA-Z0-9-_.]{2,62}$ (obrigatório)
properties Propriedades de um projeto. ProjectProperties
tags Etiquetas de recursos Dicionário de nomes e valores de tags. Consulte Tags em modelos
tipo O tipo de recurso 'Microsoft.DevCenter/projects'

Grupo Atribuído

Name Description Value
objectId O GUID (ID do objeto do grupo Entra). string

Constraints:
Comprimento mínimo = 36
Comprimento máximo = 36
Padrão = ^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$
âmbito O âmbito da atribuição. 'DevBox'

AzureAiServicesSettings

Name Description Value
azureAiServicesMode A propriedade indica se os serviços de IA do Azure estão habilitados. 'AutoDeploy'
'Disabled'

DevBoxScheduleDeleteSettings

Name Description Value
cancelOnConnectEnableStatus Indica se a exclusão agendada deve ser cancelada quando um usuário se conecta à caixa de desenvolvimento. 'Disabled'
'Enabled'
deleteMode Indica o modo de exclusão para Dev Boxes dentro deste projeto. 'Auto'
'Manual'
gracePeriod ISO8601 duração necessária para que a caixa de desenvolvimento seja marcada para exclusão antes de ser excluída. ISO8601 formato PT[n]H[n]M[n]S. cadeia (de caracteres)
inactiveThreshold ISO8601 duração necessária para que a caixa de desenvolvimento não fique inativa antes de ser agendada para exclusão. ISO8601 formato PT[n]H[n]M[n]S. cadeia (de caracteres)

ManagedServiceIdentity

Name Description Value
tipo Tipo de identidade de serviço gerenciado (onde os tipos SystemAssigned e UserAssigned são permitidos). 'None'
'SystemAssigned'
'SystemAssigned, UserAssigned'
'UserAssigned' (obrigatório)
userAssignedIdentities O conjunto de identidades atribuídas pelo usuário associadas ao recurso. As chaves do dicionário userAssignedIdentities serão ids de recurso ARM no formato: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Os valores de dicionário podem ser objetos vazios ({}) em solicitações. UserAssignedIdentities

ProjectCatalogSettings

Name Description Value
catalogItemSyncTypes Indica os tipos de item de catálogo que podem ser sincronizados. Matriz de cadeia de caracteres contendo qualquer uma das:
'EnvironmentDefinition'
'ImageDefinition'

ProjectCustomizationManagedIdentity

Name Description Value
identityResourceId Ex: /subscriptions/fa5fc227-a624-475e-b696-cdd604c735bc/resourceGroups/<grupo de recursos>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myId. Mutuamente exclusivo com identityType systemAssignedIdentity. cadeia (de caracteres)
identityType Os valores podem ser systemAssignedIdentity ou userAssignedIdentity. 'systemAssignedIdentity'
'userAssignedIdentity'

ProjectCustomizationSettings

Name Description Value
identities As identidades que podem ser usadas em cenários de personalização; por exemplo, para clonar um repositório. ProjectCustomizationManagedIdentity[]
userCustomizationsEnableStatus Indica se as personalizações do usuário estão habilitadas. 'Disabled'
'Enabled'

ProjectProperties

Name Description Value
assignedGroups Lista de atribuições de grupo do Entra ID associadas a este projeto. Grupo atribuído[]
azureAiServicesSettings Indica se os serviços de IA do Azure estão habilitados para um projeto. AzureAiServicesSettings
catalogSettings Configurações a serem usadas ao associar um projeto a um catálogo. ProjectCatalogSettings
customizationSettings Configurações a serem usadas para personalizações. ProjectCustomizationSettings
description Descrição do projeto. cadeia (de caracteres)
devBoxScheduleDeleteSettings Dev Box Schedule Delete configurações. DevBoxScheduleDeleteSettings
devCenterId ID do recurso de um DevCenter associado. cadeia (de caracteres)
displayName O nome para exibição do projeto. cadeia (de caracteres)
maxDevBoxesPerUser Quando especificado, limita o número máximo de Caixas de Desenvolvimento que um único usuário pode criar em todos os pools do projeto. Isso não terá efeito nas Caixas de Desenvolvimento existentes quando reduzidas. int

Constraints:
Valor mínimo = 0
serverlessGpuSessionsSettings Configurações a serem usadas para GPU sem servidor. ServerlessGpuSessionsSettings
workspaceStorageSettings Configurações a serem usadas para armazenamento de espaço de trabalho. WorkspaceStorageSettings

ServerlessGpuSessionsSettings

Name Description Value
maxConcurrentSessionsPerProject Quando especificado, limita o número máximo de sessões simultâneas em todos os pools do projeto. int

Constraints:
Valor mínimo = 1
serverlessGpuSessionsMode A propriedade indica se o acesso à GPU sem servidor está habilitado no projeto. 'AutoDeploy'
'Disabled'

TrackedResourceTags

Name Description Value

UserAssignedIdentities

Name Description Value

UserAssignedIdentity

Name Description Value

WorkspaceStorageSettings

Name Description Value
workspaceStorageMode Indica se o armazenamento do espaço de trabalho está habilitado. 'AutoDeploy'
'Disabled'

Exemplos de uso

Modelos de início rápido do Azure

Os seguintes modelos de início rápido do Azure implantar esse tipo de recurso.

Template Description
de serviço Configurar Ambientes de Implantação

Implantar no Azure
Este modelo fornece uma maneira de configurar ambientes de implantação.
Configurar o serviço Caixa de Desenvolvimento

Implantar no Azure
Este modelo criaria todos os recursos de administração da Caixa de Desenvolvimento de acordo com o guia de início rápido da Caixa de Desenvolvimento (/azure/dev-box/quickstart-create-dev-box). Você pode visualizar todos os recursos criados ou ir diretamente para DevPortal.microsoft.com para criar sua primeira Caixa de Desenvolvimento.
Implantar o Serviço de Caixa de Desenvolvimento

Implantar no Azure
Este modelo fornece uma maneira de configurar todos os recursos necessários para criar uma Caixa de Desenvolvimento.
Implantar o Dev Box Service com de imagem interna

Implantar no Azure
Este modelo fornece uma maneira de implantar um serviço Dev Box com imagem interna.

Definição de recursos Terraform (provedor AzAPI)

O tipo de recurso de projetos pode ser implantado com operações que visam:

Para obter uma lista de propriedades alteradas em cada versão da API, consulte log de alterações.

Formato do recurso

Para criar um recurso Microsoft.DevCenter/projects, adicione o seguinte Terraform ao seu modelo.

resource "azapi_resource" "symbolicname" {
  type = "Microsoft.DevCenter/projects@2025-10-01-preview"
  name = "string"
  parent_id = "string"
  identity {
    type = "string"
    identity_ids = [
      "string"
    ]
  }
  location = "string"
  tags = {
    {customized property} = "string"
  }
  body = {
    properties = {
      assignedGroups = [
        {
          objectId = "string"
          scope = "string"
        }
      ]
      azureAiServicesSettings = {
        azureAiServicesMode = "string"
      }
      catalogSettings = {
        catalogItemSyncTypes = [
          "string"
        ]
      }
      customizationSettings = {
        identities = [
          {
            identityResourceId = "string"
            identityType = "string"
          }
        ]
        userCustomizationsEnableStatus = "string"
      }
      description = "string"
      devBoxScheduleDeleteSettings = {
        cancelOnConnectEnableStatus = "string"
        deleteMode = "string"
        gracePeriod = "string"
        inactiveThreshold = "string"
      }
      devCenterId = "string"
      displayName = "string"
      maxDevBoxesPerUser = int
      serverlessGpuSessionsSettings = {
        maxConcurrentSessionsPerProject = int
        serverlessGpuSessionsMode = "string"
      }
      workspaceStorageSettings = {
        workspaceStorageMode = "string"
      }
    }
  }
}

Valores de propriedade

Microsoft.DevCenter/projects

Name Description Value
identidade Propriedades de identidade gerenciadas. ManagedServiceIdentity
localização A geolocalização onde o recurso vive string (obrigatório)
name O nome do recurso string

Constraints:
Comprimento mínimo = 3
Comprimento máximo = 63
Padrão = ^[a-zA-Z0-9][a-zA-Z0-9-_.]{2,62}$ (obrigatório)
parent_id A ID do recurso ao qual aplicar esse recurso de extensão. string (obrigatório)
properties Propriedades de um projeto. ProjectProperties
tags Etiquetas de recursos Dicionário de nomes e valores de tags.
tipo O tipo de recurso "Microsoft.DevCenter/projects@2025-10-01-preview"

Grupo Atribuído

Name Description Value
objectId O GUID (ID do objeto do grupo Entra). string

Constraints:
Comprimento mínimo = 36
Comprimento máximo = 36
Padrão = ^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$
âmbito O âmbito da atribuição. 'DevBox'

AzureAiServicesSettings

Name Description Value
azureAiServicesMode A propriedade indica se os serviços de IA do Azure estão habilitados. 'AutoDeploy'
'Disabled'

DevBoxScheduleDeleteSettings

Name Description Value
cancelOnConnectEnableStatus Indica se a exclusão agendada deve ser cancelada quando um usuário se conecta à caixa de desenvolvimento. 'Disabled'
'Enabled'
deleteMode Indica o modo de exclusão para Dev Boxes dentro deste projeto. 'Auto'
'Manual'
gracePeriod ISO8601 duração necessária para que a caixa de desenvolvimento seja marcada para exclusão antes de ser excluída. ISO8601 formato PT[n]H[n]M[n]S. cadeia (de caracteres)
inactiveThreshold ISO8601 duração necessária para que a caixa de desenvolvimento não fique inativa antes de ser agendada para exclusão. ISO8601 formato PT[n]H[n]M[n]S. cadeia (de caracteres)

ManagedServiceIdentity

Name Description Value
tipo Tipo de identidade de serviço gerenciado (onde os tipos SystemAssigned e UserAssigned são permitidos). 'None'
'SystemAssigned'
'SystemAssigned, UserAssigned'
'UserAssigned' (obrigatório)
userAssignedIdentities O conjunto de identidades atribuídas pelo usuário associadas ao recurso. As chaves do dicionário userAssignedIdentities serão ids de recurso ARM no formato: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Os valores de dicionário podem ser objetos vazios ({}) em solicitações. UserAssignedIdentities

ProjectCatalogSettings

Name Description Value
catalogItemSyncTypes Indica os tipos de item de catálogo que podem ser sincronizados. Matriz de cadeia de caracteres contendo qualquer uma das:
'EnvironmentDefinition'
'ImageDefinition'

ProjectCustomizationManagedIdentity

Name Description Value
identityResourceId Ex: /subscriptions/fa5fc227-a624-475e-b696-cdd604c735bc/resourceGroups/<grupo de recursos>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myId. Mutuamente exclusivo com identityType systemAssignedIdentity. cadeia (de caracteres)
identityType Os valores podem ser systemAssignedIdentity ou userAssignedIdentity. 'systemAssignedIdentity'
'userAssignedIdentity'

ProjectCustomizationSettings

Name Description Value
identities As identidades que podem ser usadas em cenários de personalização; por exemplo, para clonar um repositório. ProjectCustomizationManagedIdentity[]
userCustomizationsEnableStatus Indica se as personalizações do usuário estão habilitadas. 'Disabled'
'Enabled'

ProjectProperties

Name Description Value
assignedGroups Lista de atribuições de grupo do Entra ID associadas a este projeto. Grupo atribuído[]
azureAiServicesSettings Indica se os serviços de IA do Azure estão habilitados para um projeto. AzureAiServicesSettings
catalogSettings Configurações a serem usadas ao associar um projeto a um catálogo. ProjectCatalogSettings
customizationSettings Configurações a serem usadas para personalizações. ProjectCustomizationSettings
description Descrição do projeto. cadeia (de caracteres)
devBoxScheduleDeleteSettings Dev Box Schedule Delete configurações. DevBoxScheduleDeleteSettings
devCenterId ID do recurso de um DevCenter associado. cadeia (de caracteres)
displayName O nome para exibição do projeto. cadeia (de caracteres)
maxDevBoxesPerUser Quando especificado, limita o número máximo de Caixas de Desenvolvimento que um único usuário pode criar em todos os pools do projeto. Isso não terá efeito nas Caixas de Desenvolvimento existentes quando reduzidas. int

Constraints:
Valor mínimo = 0
serverlessGpuSessionsSettings Configurações a serem usadas para GPU sem servidor. ServerlessGpuSessionsSettings
workspaceStorageSettings Configurações a serem usadas para armazenamento de espaço de trabalho. WorkspaceStorageSettings

ServerlessGpuSessionsSettings

Name Description Value
maxConcurrentSessionsPerProject Quando especificado, limita o número máximo de sessões simultâneas em todos os pools do projeto. int

Constraints:
Valor mínimo = 1
serverlessGpuSessionsMode A propriedade indica se o acesso à GPU sem servidor está habilitado no projeto. 'AutoDeploy'
'Disabled'

TrackedResourceTags

Name Description Value

UserAssignedIdentities

Name Description Value

UserAssignedIdentity

Name Description Value

WorkspaceStorageSettings

Name Description Value
workspaceStorageMode Indica se o armazenamento do espaço de trabalho está habilitado. 'AutoDeploy'
'Disabled'

Exemplos de uso

Amostras Terraform

Um exemplo básico de implantação do Dev Center Project.

terraform {
  required_providers {
    azapi = {
      source = "Azure/azapi"
    }
  }
}

provider "azapi" {
  skip_provider_registration = false
}

variable "resource_name" {
  type    = string
  default = "acctest0001"
}

variable "location" {
  type    = string
  default = "westus"
}

resource "azapi_resource" "resourceGroup" {
  type     = "Microsoft.Resources/resourceGroups@2020-06-01"
  name     = var.resource_name
  location = var.location
}

resource "azapi_resource" "devCenter" {
  type      = "Microsoft.DevCenter/devCenters@2025-02-01"
  parent_id = azapi_resource.resourceGroup.id
  name      = var.resource_name
  location  = var.location
  identity {
    type = "SystemAssigned"
  }
  body = {
    properties = {}
  }
}

resource "azapi_resource" "project" {
  type      = "Microsoft.DevCenter/projects@2025-02-01"
  parent_id = azapi_resource.resourceGroup.id
  name      = "${var.resource_name}-proj"
  location  = var.location
  body = {
    properties = {
      description        = ""
      devCenterId        = azapi_resource.devCenter.id
      maxDevBoxesPerUser = 0
    }
  }
}