Skip to content
  •  
  •  
  •  
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-azure-resource-manager";
import "@typespec/openapi";
import "@typespec/rest";
import "@typespec/versioning";
import "./models.tsp";
import "./Site.tsp";

using TypeSpec.Rest;
using Azure.ResourceManager;
using TypeSpec.Http;
using TypeSpec.OpenAPI;
using TypeSpec.Versioning;

namespace Microsoft.Web;

/**
* Represents the Last Known Good (LKG) revision status for a site.
*/
@added(Versions.v2026_06_01_preview)
@parentResource(Site)
model LastKnownGoodResource
is Azure.ResourceManager.ProxyResource<LastKnownGoodProperties> {
...ResourceNameParameter<
Resource = LastKnownGoodResource,
KeyName = "lkgName",
SegmentName = "lastKnownGood",
NamePattern = "^default$"
>;

/** Kind of resource. */
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "Existing pattern in Microsoft.Web"
kind?: string;
}

@added(Versions.v2026_06_01_preview)
@armResourceOperations
interface LastKnownGoodOps
extends Azure.ResourceManager.Legacy.LegacyOperations<
{
...ApiVersionParameter,
...SubscriptionIdParameter,
...ResourceGroupParameter,
...Azure.ResourceManager.Legacy.Provider,

/** Name of the app. */
@path
@segment("sites")
@key
name: string,
},
{
/** Name of the Last Known Good resource. Must be "default". */
@path
@segment("lastKnownGood")
@key
@pattern("^default$")
lkgName: string,
}
> {}

@added(Versions.v2026_06_01_preview)
@tag("WebApps")
@armResourceOperations(#{ omitTags: true })
interface LastKnownGoods {
/**
* Get the current Last Known Good revision for a web app.
*/
@summary("Get the current Last Known Good revision for a web app.")
get is LastKnownGoodOps.Read<
LastKnownGoodResource,
OverrideErrorType = DefaultErrorResponse
>;

/**
* Mark the current site state as Last Known Good.
*/
@summary("Mark the current site state as Last Known Good.")
@action("mark")
mark is LastKnownGoodOps.ActionSync<
LastKnownGoodResource,
void,
ArmResponse<LastKnownGoodResource>,
OverrideErrorType = DefaultErrorResponse
>;
}

@@doc(LastKnownGoodResource.name, "Name of the Last Known Good resource.");
@@doc(LastKnownGoodResource.properties,
"LastKnownGood resource specific properties"
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-azure-resource-manager";
import "@typespec/openapi";
import "@typespec/rest";
import "@typespec/versioning";
import "./models.tsp";
import "./Site.tsp";

using TypeSpec.Rest;
using Azure.ResourceManager;
using TypeSpec.Http;
using TypeSpec.OpenAPI;
using TypeSpec.Versioning;

namespace Microsoft.Web;

/**
* Managed traffic configuration for a site, controlling how traffic is routed across silos.
*/
@added(Versions.v2026_06_01_preview)
@parentResource(Site)
model ManagedTrafficConfigResource
is Azure.ResourceManager.ProxyResource<ManagedTrafficConfigProperties> {
...ResourceNameParameter<
Resource = ManagedTrafficConfigResource,
KeyName = "configName",
SegmentName = "managedTrafficConfig",
NamePattern = "^default$"
>;

/** Kind of resource. */
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "Existing pattern in Microsoft.Web"
kind?: string;
}

@added(Versions.v2026_06_01_preview)
@armResourceOperations
interface ManagedTrafficConfigOps
extends Azure.ResourceManager.Legacy.LegacyOperations<
{
...ApiVersionParameter,
...SubscriptionIdParameter,
...ResourceGroupParameter,
...Azure.ResourceManager.Legacy.Provider,

/** Name of the app. */
@path
@segment("sites")
@key
name: string,
},
{
/** Name of the managed traffic configuration. Must be "default". */
@path
@segment("managedTrafficConfig")
@key
@pattern("^default$")
configName: string,
}
> {}

@added(Versions.v2026_06_01_preview)
@tag("WebApps")
@armResourceOperations(#{ omitTags: true })
interface ManagedTrafficConfigs {
/**
* Get the managed traffic configuration for a web app.
*/
@summary("Get the managed traffic configuration for a web app.")
get is ManagedTrafficConfigOps.Read<
ManagedTrafficConfigResource,
OverrideErrorType = DefaultErrorResponse
>;

/**
* Update the managed traffic configuration for a web app.
*/
@summary("Update the managed traffic configuration for a web app.")
update is ManagedTrafficConfigOps.CreateOrUpdateSync<
ManagedTrafficConfigResource,
Response = ArmResourceUpdatedResponse<ManagedTrafficConfigResource>,
OverrideErrorType = DefaultErrorResponse
>;
}

@@doc(ManagedTrafficConfigResource.name,
"Name of the managed traffic configuration."
);
@@doc(ManagedTrafficConfigResource.properties,
"ManagedTrafficConfig resource specific properties"
);
@@doc(ManagedTrafficConfigs.update::parameters.resource,
"Traffic configuration properties."
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-azure-resource-manager";
import "@typespec/openapi";
import "@typespec/rest";
import "@typespec/versioning";
import "./models.tsp";
import "./AppServicePlan.tsp";

using TypeSpec.Rest;
using Azure.ResourceManager;
using TypeSpec.Http;
using TypeSpec.OpenAPI;
using TypeSpec.Versioning;

namespace Microsoft.Web;

/**
* Represents a silo of an App Service plan.
*/
@added(Versions.v2026_06_01_preview)
@parentResource(AppServicePlan)
model ServerFarmSilo
is Azure.ResourceManager.TrackedResource<ServerFarmSiloProperties> {
...ResourceNameParameter<
Resource = ServerFarmSilo,
KeyName = "siloName",
SegmentName = "silos",
NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]$"
>;

/** Kind of resource. */
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "Existing pattern in Microsoft.Web"
kind?: string;
}

@added(Versions.v2026_06_01_preview)
@armResourceOperations
interface ServerFarmSiloOps
extends Azure.ResourceManager.Legacy.LegacyOperations<
{
...ApiVersionParameter,
...SubscriptionIdParameter,
...ResourceGroupParameter,
...Azure.ResourceManager.Legacy.Provider,

/** Name of the App Service plan. */
@path
@segment("serverfarms")
@key
name: string,
},
{
/** Name of the silo. */
@path
@segment("silos")
@key
@pattern("^[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]$")
siloName: string,
}
> {}

@added(Versions.v2026_06_01_preview)
@tag("AppServicePlans")
@armResourceOperations(#{ omitTags: true })
interface ServerFarmSilos {
/**
* Get a specific silo for an App Service plan.
*/
@summary("Get a specific silo for an App Service plan.")
get is ServerFarmSiloOps.Read<
ServerFarmSilo,
OverrideErrorType = DefaultErrorResponse
>;

/**
* Create or update an App Service plan silo.
*/
@summary("Create or update an App Service plan silo.")
createOrUpdate is ServerFarmSiloOps.CreateOrUpdateAsync<
ServerFarmSilo,
OverrideErrorType = DefaultErrorResponse
>;

/**
* Delete an App Service plan silo.
*/
@summary("Delete an App Service plan silo.")
delete is ServerFarmSiloOps.DeleteWithoutOkAsync<
ServerFarmSilo,
OverrideErrorType = DefaultErrorResponse
>;

/**
* Get all silos for an App Service plan.
*/
@summary("Get all silos for an App Service plan.")
list is ServerFarmSiloOps.List<
ServerFarmSilo,
Response = ArmResponse<ServerFarmSiloCollection>,
OverrideErrorType = DefaultErrorResponse
>;
}

@@doc(ServerFarmSilo.name, "Name of the silo.");
@@doc(ServerFarmSilo.properties, "ServerFarmSilo resource specific properties");
@@doc(ServerFarmSilos.createOrUpdate::parameters.resource,
"Details of the silo."
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-azure-resource-manager";
import "@typespec/openapi";
import "@typespec/rest";
import "@typespec/versioning";
import "./models.tsp";
import "./Site.tsp";

using TypeSpec.Rest;
using Azure.ResourceManager;
using TypeSpec.Http;
using TypeSpec.OpenAPI;
using TypeSpec.Versioning;

namespace Microsoft.Web;

/**
* Represents a silo of an App Service site.
*/
@added(Versions.v2026_06_01_preview)
@parentResource(Site)
model SiteSilo is Azure.ResourceManager.TrackedResource<SiteSiloProperties> {
...ResourceNameParameter<
Resource = SiteSilo,
KeyName = "siloName",
SegmentName = "silos",
NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]$"
>;

/** Kind of resource. */
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "Existing pattern in Microsoft.Web"
kind?: string;
}

@added(Versions.v2026_06_01_preview)
@armResourceOperations
interface SiteSiloOps
extends Azure.ResourceManager.Legacy.LegacyOperations<
{
...ApiVersionParameter,
...SubscriptionIdParameter,
...ResourceGroupParameter,
...Azure.ResourceManager.Legacy.Provider,

/** Name of the app. */
@path
@segment("sites")
@key
name: string,
},
{
/** Name of the silo. */
@path
@segment("silos")
@key
@pattern("^[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]$")
siloName: string,
}
> {}

@added(Versions.v2026_06_01_preview)
@tag("WebApps")
@armResourceOperations(#{ omitTags: true })
interface SiteSilos {
/**
* Get a specific silo for a web app.
*/
@summary("Get a specific silo for a web app.")
get is SiteSiloOps.Read<SiteSilo, OverrideErrorType = DefaultErrorResponse>;

/**
* Create or update a web app silo.
*/
@summary("Create or update a web app silo.")
createOrUpdate is SiteSiloOps.CreateOrUpdateAsync<
SiteSilo,
OverrideErrorType = DefaultErrorResponse
>;

/**
* Delete a web app silo.
*/
@summary("Delete a web app silo.")
delete is SiteSiloOps.DeleteWithoutOkAsync<
SiteSilo,
OverrideErrorType = DefaultErrorResponse
>;

/**
* Get all silos for a web app.
*/
@summary("Get all silos for a web app.")
list is SiteSiloOps.List<
SiteSilo,
Response = ArmResponse<SiteSiloCollection>,
OverrideErrorType = DefaultErrorResponse
>;
}

@@doc(SiteSilo.name, "Name of the silo.");
@@doc(SiteSilo.properties, "SiteSilo resource specific properties");
@@doc(SiteSilos.createOrUpdate::parameters.resource, "Details of the silo.");
Loading
Loading