Projekty Microsoft.DevCenter

Definice prostředku Bicep

Typ zdroje projektů lze nasadit s operacemi, které cílí:

Seznam změněných vlastností v jednotlivých verzích rozhraní API najdete v protokolu změn.

Formát prostředku

Pokud chcete vytvořit zdroj Microsoft.DevCenter/projects, přidejte do šablony následující bicep.

resource symbolicname 'Microsoft.DevCenter/projects@2026-01-01-preview' = {
  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'
  }
}

Hodnoty vlastností

Microsoft.DevCenter/projects

Name Description Value
identita Vlastnosti spravované identity ManagedServiceIdentity
poloha Geografické umístění, ve kterém se nachází zdroj string (povinné)
name Název prostředku string

Constraints:
Minimální délka = 3
Maximální délka = 63
Model = ^[a-zA-Z0-9][a-zA-Z0-9-_.]{2,62}$ (povinné)
properties Vlastnosti projektu ProjectProperties
tags Štítky prostředků Slovník názvů a hodnot značek Viz Značky v šablonách

Přiřazená skupina

Name Description Value
objectId ID objektu (GUID) skupiny Entra. string

Constraints:
Minimální délka = 36
Maximální délka = 36
Model = ^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$
obor Rozsah zadání. 'DevBox'

AzureAiServicesSettings

Name Description Value
azureAiServicesMode Tato vlastnost označuje, zda jsou povoleny služby Azure AI. 'AutoDeploy'
'Disabled'

DevBoxScheduleDeleteSettings

Name Description Value
cancelOnConnectEnableStatus Označuje, jestli se má plánované odstranění zrušit, když se uživatel připojí k vývojovému poli. 'Disabled'
'Enabled'
deleteMode Označuje režim odstranění pro Dev Boxy v rámci tohoto projektu. 'Auto'
'Manual'
gracePeriod ISO8601 doba potřebná k tomu, aby byl vývojový box před odstraněním označen k odstranění. ISO8601 formátu PT[n]H[n]M[n]S. řetězec
inactiveThreshold ISO8601 doba potřebná k tomu, aby Dev Box nebyl neaktivní před naplánováním jeho odstranění. ISO8601 formátu PT[n]H[n]M[n]S. řetězec

ManagedServiceIdentity

Name Description Value
typ Typ identity spravované služby (kde jsou povolené typy SystemAssigned i UserAssigned). 'None'
'SystemAssigned'
SystemAssigned, UserAssigned
UserAssigned (povinné)
userAssignedIdentities Sada identit přiřazených uživatelem přidružená k prostředku. Klíče slovníku userAssignedIdentities budou ID prostředků ARM ve formuláři: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Hodnoty slovníku můžou být prázdné objekty ({}) v požadavcích. UserAssignedIdentities

ProjectCatalogSettings

Name Description Value
catalogItemSyncTypes Označuje typy položek katalogu, které je možné synchronizovat. Řetězcové pole obsahující některou z těchto možností:
'EnvironmentDefinition'
'ImageDefinition'

ProjectCustomizationManagedIdentity

Name Description Value
identityResourceId Příklad: /subscriptions/fa5fc227-a624-475e-b696-cdd604c735bc/resourceGroups/<skupiny prostředků>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myId. Vzájemně se vylučují s typem identity systemAssignedIdentity. řetězec
identityType Hodnoty mohou být systemAssignedIdentity nebo userAssignedIdentity. 'systemAssignedIdentity'
'userAssignedIdentity'

ProjectCustomizationSettings

Name Description Value
identities Identity, které lze použít ve scénářích přizpůsobení; např. pro klonování úložiště. ProjectCustomizationManagedIdentity[]
userCustomizationsEnableStatus Označuje, zda jsou povolena uživatelská přizpůsobení. 'Disabled'
'Enabled'

ProjectProperties

Name Description Value
přiřazenéSkupiny Seznam přiřazení skupin Entra ID přidružených k tomuto projektu. Přiřazená_skupina[]
azureAiServicesSettings Označuje, zda jsou pro projekt povoleny služby Azure AI. AzureAiServicesSettings
catalogSettings Nastavení, která se mají použít při přidružování projektu ke katalogu. ProjectCatalogSettings
customizationSettings Nastavení, která se mají použít pro přizpůsobení. ProjectCustomizationSettings
description Popis projektu řetězec
devBoxScheduleDeleteSettings Nastavení pro odstranění plánu vývojového boxu. DevBoxScheduleDeleteSettings
devCenterId ID prostředku přidruženého centra DevCenter. řetězec
displayName Zobrazovaný název projektu. řetězec
maxDevBoxesPerUser Když zadáte, omezí maximální počet dev boxů, který může jeden uživatel vytvořit ve všech fondech v projektu. Tato funkce nebude mít žádný vliv na stávající vývojová pole, když se sníží. int

Constraints:
Minimální hodnota = 0
serverlessGpuSessionsSettings Nastavení, která se mají použít pro bezserverový GPU. ServerlessGpuSessionsSettings
workspaceStorageSettings Nastavení, která se mají použít pro ukládání pracovních prostorů. WorkspaceStorageSettings

ServerlessGpuSessionsSettings

Name Description Value
maxConcurrentSessionsPerProject Pokud je tato možnost zadána, omezuje maximální počet souběžných relací ve všech fondech v projektu. int

Constraints:
Minimální hodnota = 1
serverlessGpuSessionsMode Tato vlastnost označuje, zda je v projektu povolen přístup bez serveru GPU. 'AutoDeploy'
'Disabled'

TrackedResourceTags

Name Description Value

UserAssignedIdentities

Name Description Value

UserAssignedIdentity

Name Description Value

WorkspaceStorageSettings

Name Description Value
workspaceStorageMode Označuje, zda je povoleno úložiště pracovního prostoru. 'AutoDeploy'
'Disabled'

Příklady použití

Ukázky Bicep

Základní příklad nasazení projektu Dev Center.

param resourceName string = 'acctest0001'
param location string = 'westus'

resource devCenter 'Microsoft.DevCenter/devCenters@2025-02-01' = {
  name: resourceName
  location: location
  properties: {}
}

resource project 'Microsoft.DevCenter/projects@2025-02-01' = {
  name: '${resourceName}-proj'
  location: location
  properties: {
    description: ''
    devCenterId: devCenter.id
    maxDevBoxesPerUser: 0
  }
}

Ověřené moduly Azure

K nasazení tohoto typu prostředku je možné použít následující ověřené moduly Azure.

Modul Description
Projekt Dev Center Modul prostředků AVM pro projekt Dev Center

Ukázky rychlého startu Azure

Následující šablony Azure pro rychlý start obsahují ukázky Bicep pro nasazení tohoto typu prostředku.

Soubor Bicep Description
konfigurace služby prostředí nasazení Tato šablona poskytuje způsob konfigurace prostředí nasazení.
konfigurace služby Dev Box Tato šablona by vytvořila všechny prostředky pro správu Dev Boxu podle úvodní příručky pro Dev Box (/azure/dev-box/quickstart-create-dev-box). Můžete zobrazit všechny vytvořené prostředky nebo přejít přímo na DevPortal.microsoft.com a vytvořit svůj první Dev Box.
Nasazení služby Dev Box Service Tato šablona poskytuje způsob, jak nakonfigurovat všechny zdroje potřebné k vytvoření Dev Boxu.
nasazení služby Dev Box Service s integrovanou imagí Tato šablona poskytuje způsob, jak nasadit službu Dev Box s integrovanou imagí.

Definice prostředku šablony ARM

Typ zdroje projektů lze nasadit s operacemi, které cílí:

Seznam změněných vlastností v jednotlivých verzích rozhraní API najdete v protokolu změn.

Formát prostředku

Pokud chcete vytvořit prostředek Microsoft.DevCenter/projects, přidejte do šablony následující KÓD JSON.

{
  "type": "Microsoft.DevCenter/projects",
  "apiVersion": "2026-01-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"
  }
}

Hodnoty vlastností

Microsoft.DevCenter/projects

Name Description Value
apiVersion Verze rozhraní API 'Náhled 1. 1. 2026'
identita Vlastnosti spravované identity ManagedServiceIdentity
poloha Geografické umístění, ve kterém se nachází zdroj string (povinné)
name Název prostředku string

Constraints:
Minimální délka = 3
Maximální délka = 63
Model = ^[a-zA-Z0-9][a-zA-Z0-9-_.]{2,62}$ (povinné)
properties Vlastnosti projektu ProjectProperties
tags Štítky prostředků Slovník názvů a hodnot značek Viz Značky v šablonách
typ Typ prostředku 'Microsoft.DevCenter/projects'

Přiřazená skupina

Name Description Value
objectId ID objektu (GUID) skupiny Entra. string

Constraints:
Minimální délka = 36
Maximální délka = 36
Model = ^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$
obor Rozsah zadání. 'DevBox'

AzureAiServicesSettings

Name Description Value
azureAiServicesMode Tato vlastnost označuje, zda jsou povoleny služby Azure AI. 'AutoDeploy'
'Disabled'

DevBoxScheduleDeleteSettings

Name Description Value
cancelOnConnectEnableStatus Označuje, jestli se má plánované odstranění zrušit, když se uživatel připojí k vývojovému poli. 'Disabled'
'Enabled'
deleteMode Označuje režim odstranění pro Dev Boxy v rámci tohoto projektu. 'Auto'
'Manual'
gracePeriod ISO8601 doba potřebná k tomu, aby byl vývojový box před odstraněním označen k odstranění. ISO8601 formátu PT[n]H[n]M[n]S. řetězec
inactiveThreshold ISO8601 doba potřebná k tomu, aby Dev Box nebyl neaktivní před naplánováním jeho odstranění. ISO8601 formátu PT[n]H[n]M[n]S. řetězec

ManagedServiceIdentity

Name Description Value
typ Typ identity spravované služby (kde jsou povolené typy SystemAssigned i UserAssigned). 'None'
'SystemAssigned'
SystemAssigned, UserAssigned
UserAssigned (povinné)
userAssignedIdentities Sada identit přiřazených uživatelem přidružená k prostředku. Klíče slovníku userAssignedIdentities budou ID prostředků ARM ve formuláři: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Hodnoty slovníku můžou být prázdné objekty ({}) v požadavcích. UserAssignedIdentities

ProjectCatalogSettings

Name Description Value
catalogItemSyncTypes Označuje typy položek katalogu, které je možné synchronizovat. Řetězcové pole obsahující některou z těchto možností:
'EnvironmentDefinition'
'ImageDefinition'

ProjectCustomizationManagedIdentity

Name Description Value
identityResourceId Příklad: /subscriptions/fa5fc227-a624-475e-b696-cdd604c735bc/resourceGroups/<skupiny prostředků>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myId. Vzájemně se vylučují s typem identity systemAssignedIdentity. řetězec
identityType Hodnoty mohou být systemAssignedIdentity nebo userAssignedIdentity. 'systemAssignedIdentity'
'userAssignedIdentity'

ProjectCustomizationSettings

Name Description Value
identities Identity, které lze použít ve scénářích přizpůsobení; např. pro klonování úložiště. ProjectCustomizationManagedIdentity[]
userCustomizationsEnableStatus Označuje, zda jsou povolena uživatelská přizpůsobení. 'Disabled'
'Enabled'

ProjectProperties

Name Description Value
přiřazenéSkupiny Seznam přiřazení skupin Entra ID přidružených k tomuto projektu. Přiřazená_skupina[]
azureAiServicesSettings Označuje, zda jsou pro projekt povoleny služby Azure AI. AzureAiServicesSettings
catalogSettings Nastavení, která se mají použít při přidružování projektu ke katalogu. ProjectCatalogSettings
customizationSettings Nastavení, která se mají použít pro přizpůsobení. ProjectCustomizationSettings
description Popis projektu řetězec
devBoxScheduleDeleteSettings Nastavení pro odstranění plánu vývojového boxu. DevBoxScheduleDeleteSettings
devCenterId ID prostředku přidruženého centra DevCenter. řetězec
displayName Zobrazovaný název projektu. řetězec
maxDevBoxesPerUser Když zadáte, omezí maximální počet dev boxů, který může jeden uživatel vytvořit ve všech fondech v projektu. Tato funkce nebude mít žádný vliv na stávající vývojová pole, když se sníží. int

Constraints:
Minimální hodnota = 0
serverlessGpuSessionsSettings Nastavení, která se mají použít pro bezserverový GPU. ServerlessGpuSessionsSettings
workspaceStorageSettings Nastavení, která se mají použít pro ukládání pracovních prostorů. WorkspaceStorageSettings

ServerlessGpuSessionsSettings

Name Description Value
maxConcurrentSessionsPerProject Pokud je tato možnost zadána, omezuje maximální počet souběžných relací ve všech fondech v projektu. int

Constraints:
Minimální hodnota = 1
serverlessGpuSessionsMode Tato vlastnost označuje, zda je v projektu povolen přístup bez serveru GPU. 'AutoDeploy'
'Disabled'

TrackedResourceTags

Name Description Value

UserAssignedIdentities

Name Description Value

UserAssignedIdentity

Name Description Value

WorkspaceStorageSettings

Name Description Value
workspaceStorageMode Označuje, zda je povoleno úložiště pracovního prostoru. 'AutoDeploy'
'Disabled'

Příklady použití

Šablony azure pro rychlý start

Následující šablony Azure Pro rychlý start nasadit tento typ prostředku.

Template Description
konfigurace služby prostředí nasazení

nasazení do Azure
Tato šablona poskytuje způsob konfigurace prostředí nasazení.
konfigurace služby Dev Box

nasazení do Azure
Tato šablona by vytvořila všechny prostředky pro správu Dev Boxu podle úvodní příručky pro Dev Box (/azure/dev-box/quickstart-create-dev-box). Můžete zobrazit všechny vytvořené prostředky nebo přejít přímo na DevPortal.microsoft.com a vytvořit svůj první Dev Box.
Nasazení služby Dev Box Service

nasazení do Azure
Tato šablona poskytuje způsob, jak nakonfigurovat všechny zdroje potřebné k vytvoření Dev Boxu.
nasazení služby Dev Box Service s integrovanou imagí

nasazení do Azure
Tato šablona poskytuje způsob, jak nasadit službu Dev Box s integrovanou imagí.

Definice prostředku Terraformu (poskytovatel AzAPI)

Typ zdroje projektů lze nasadit s operacemi, které cílí:

  • skupiny prostředků

Seznam změněných vlastností v jednotlivých verzích rozhraní API najdete v protokolu změn.

Formát prostředku

Pokud chcete vytvořit prostředek Microsoft.DevCenter/projects, přidejte do šablony následující Terraform.

resource "azapi_resource" "symbolicname" {
  type = "Microsoft.DevCenter/projects@2026-01-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"
      }
    }
  }
}

Hodnoty vlastností

Microsoft.DevCenter/projects

Name Description Value
identita Vlastnosti spravované identity ManagedServiceIdentity
poloha Geografické umístění, ve kterém se nachází zdroj string (povinné)
name Název prostředku string

Constraints:
Minimální délka = 3
Maximální délka = 63
Model = ^[a-zA-Z0-9][a-zA-Z0-9-_.]{2,62}$ (povinné)
properties Vlastnosti projektu ProjectProperties
tags Štítky prostředků Slovník názvů a hodnot značek
typ Typ prostředku "Microsoft.DevCenter/projects@2026-01-01-preview"

Přiřazená skupina

Name Description Value
objectId ID objektu (GUID) skupiny Entra. string

Constraints:
Minimální délka = 36
Maximální délka = 36
Model = ^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$
obor Rozsah zadání. 'DevBox'

AzureAiServicesSettings

Name Description Value
azureAiServicesMode Tato vlastnost označuje, zda jsou povoleny služby Azure AI. 'AutoDeploy'
'Disabled'

DevBoxScheduleDeleteSettings

Name Description Value
cancelOnConnectEnableStatus Označuje, jestli se má plánované odstranění zrušit, když se uživatel připojí k vývojovému poli. 'Disabled'
'Enabled'
deleteMode Označuje režim odstranění pro Dev Boxy v rámci tohoto projektu. 'Auto'
'Manual'
gracePeriod ISO8601 doba potřebná k tomu, aby byl vývojový box před odstraněním označen k odstranění. ISO8601 formátu PT[n]H[n]M[n]S. řetězec
inactiveThreshold ISO8601 doba potřebná k tomu, aby Dev Box nebyl neaktivní před naplánováním jeho odstranění. ISO8601 formátu PT[n]H[n]M[n]S. řetězec

ManagedServiceIdentity

Name Description Value
typ Typ identity spravované služby (kde jsou povolené typy SystemAssigned i UserAssigned). 'None'
'SystemAssigned'
SystemAssigned, UserAssigned
UserAssigned (povinné)
userAssignedIdentities Sada identit přiřazených uživatelem přidružená k prostředku. Klíče slovníku userAssignedIdentities budou ID prostředků ARM ve formuláři: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Hodnoty slovníku můžou být prázdné objekty ({}) v požadavcích. UserAssignedIdentities

ProjectCatalogSettings

Name Description Value
catalogItemSyncTypes Označuje typy položek katalogu, které je možné synchronizovat. Řetězcové pole obsahující některou z těchto možností:
'EnvironmentDefinition'
'ImageDefinition'

ProjectCustomizationManagedIdentity

Name Description Value
identityResourceId Příklad: /subscriptions/fa5fc227-a624-475e-b696-cdd604c735bc/resourceGroups/<skupiny prostředků>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myId. Vzájemně se vylučují s typem identity systemAssignedIdentity. řetězec
identityType Hodnoty mohou být systemAssignedIdentity nebo userAssignedIdentity. 'systemAssignedIdentity'
'userAssignedIdentity'

ProjectCustomizationSettings

Name Description Value
identities Identity, které lze použít ve scénářích přizpůsobení; např. pro klonování úložiště. ProjectCustomizationManagedIdentity[]
userCustomizationsEnableStatus Označuje, zda jsou povolena uživatelská přizpůsobení. 'Disabled'
'Enabled'

ProjectProperties

Name Description Value
přiřazenéSkupiny Seznam přiřazení skupin Entra ID přidružených k tomuto projektu. Přiřazená_skupina[]
azureAiServicesSettings Označuje, zda jsou pro projekt povoleny služby Azure AI. AzureAiServicesSettings
catalogSettings Nastavení, která se mají použít při přidružování projektu ke katalogu. ProjectCatalogSettings
customizationSettings Nastavení, která se mají použít pro přizpůsobení. ProjectCustomizationSettings
description Popis projektu řetězec
devBoxScheduleDeleteSettings Nastavení pro odstranění plánu vývojového boxu. DevBoxScheduleDeleteSettings
devCenterId ID prostředku přidruženého centra DevCenter. řetězec
displayName Zobrazovaný název projektu. řetězec
maxDevBoxesPerUser Když zadáte, omezí maximální počet dev boxů, který může jeden uživatel vytvořit ve všech fondech v projektu. Tato funkce nebude mít žádný vliv na stávající vývojová pole, když se sníží. int

Constraints:
Minimální hodnota = 0
serverlessGpuSessionsSettings Nastavení, která se mají použít pro bezserverový GPU. ServerlessGpuSessionsSettings
workspaceStorageSettings Nastavení, která se mají použít pro ukládání pracovních prostorů. WorkspaceStorageSettings

ServerlessGpuSessionsSettings

Name Description Value
maxConcurrentSessionsPerProject Pokud je tato možnost zadána, omezuje maximální počet souběžných relací ve všech fondech v projektu. int

Constraints:
Minimální hodnota = 1
serverlessGpuSessionsMode Tato vlastnost označuje, zda je v projektu povolen přístup bez serveru GPU. 'AutoDeploy'
'Disabled'

TrackedResourceTags

Name Description Value

UserAssignedIdentities

Name Description Value

UserAssignedIdentity

Name Description Value

WorkspaceStorageSettings

Name Description Value
workspaceStorageMode Označuje, zda je povoleno úložiště pracovního prostoru. 'AutoDeploy'
'Disabled'

Příklady použití

Ukázky Terraformu

Základní příklad nasazení projektu Dev Center.

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
    }
  }
}