Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
eedff97
Add api-version 2026-03-01-preview for ServiceGroups (base copy)
Isaac-Beyene Apr 27, 2026
db9b38f
Add criticality property to ServiceGroupProperties (2026-03-01-preview)
Isaac-Beyene Apr 29, 2026
fa4eee0
Add listDescendants action to Microsoft.Management/serviceGroups (202…
Jul 17, 2026
3044559
Merge branch 'main' into kpoojary/listdescendants-2026-03-01-preview
sandipsh Jul 20, 2026
c1c35d7
Move listDescendants skipToken from query param to request body (RPC-…
Jul 22, 2026
efa9560
Suppress XMSSecretInResponse false positive on ListDescendantsRequest…
Jul 22, 2026
462af13
Restore multi-line formatting for @@doc calls in ServiceGroup.tsp
Jul 22, 2026
e631157
Add explicit skipToken to listDescendants response for POST-body pagi…
Jul 23, 2026
295e41f
Suppress secret-prop TSP warning for response skipToken
Jul 23, 2026
2d6b0bd
Remove redundant nextLink from listDescendants response (POST URL nev…
Jul 23, 2026
ab65731
Merge remote-tracking branch 'origin/main' into kpoojary/listdescenda…
Jul 23, 2026
ff53f45
Add listMembers to ServiceGroups 2026-03-01-preview
Jul 30, 2026
f9eb5f6
Update listAncestors in 2026-03-01-preview to use skipToken pagination
Jul 30, 2026
3313b5d
Merge remote-tracking branch 'origin/main' into kpoojary/listdescenda…
Jul 30, 2026
d7a6377
Apply tsp format
Jul 30, 2026
25488aa
Apply prettier to ListAncestors examples
Jul 30, 2026
ad2d5eb
Merge remote-tracking branch 'origin/main' into kpoojary/listdescenda…
Aug 3, 2026
0539bb3
Rename serviceGroupMembers relationship type to singular
Aug 3, 2026
7b46535
Add relationshipId to ServiceGroupMemberProperties
Aug 3, 2026
02cfc15
Address PR feedback: split shape by member kind and simplify parent
Aug 3, 2026
992c600
Fix Prettier formatting on ListMembers example JSONs
Aug 4, 2026
5d809ba
Merge remote-tracking branch 'origin/main' into kpoojary/listdescenda…
Aug 4, 2026
78c65f7
More updates after listMembers design discussion meeting
Aug 5, 2026
40bbbbd
Rename api version 2026-03-01-preview to 2026-09-01-preview
Aug 11, 2026
8109a6f
Merge remote-tracking branch 'origin/main' into kpoojary/listdescenda…
Aug 11, 2026
e1095db
Update service.yaml with 2026-09-01-preview version
Aug 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@
import "@azure-tools/typespec-azure-resource-manager";
import "@typespec/openapi";
import "@typespec/rest";
import "@typespec/versioning";
import "./models.tsp";

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

namespace Microsoft.Management;
/**
Expand Down Expand Up @@ -77,12 +79,74 @@
/**
* Get the details of the serviceGroup's ancestors
*/
@removed(Versions.v2026_09_01_preview)
@sharedRoute
listAncestors is ArmResourceActionSync<
ServiceGroup,
void,
ArmResponse<ServiceGroupCollectionResponse>,
BaseParameters = Azure.ResourceManager.Foundations.TenantBaseParameters
>;

/**
* Get the details of the serviceGroup's ancestors.
*
* This is a paginated POST action. When the response contains a skipToken,
* more results are available; callers must re-POST to the same listAncestors
* URL with that skipToken value in the request body to fetch the next page.
* When skipToken is absent, the current page is the last page. SDKs do not
* natively support POST-based pagination, so callers must loop manually.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "operationId must be pinned so SDK method name stays 'ListAncestors' across the versioned reshape."

Check warning on line 100 in specification/management/resource-manager/Microsoft.Management/ServiceGroups/ServiceGroup.tsp

View workflow job for this annotation

GitHub Actions / TypeSpec Suppressions - Analyze Code

⚠️ New Suppression

Authors should avoid adding new suppressions and prefer fixing the underlying issue; reviewers should approve only when there is a clear, compelling justification and no reasonable alternative.
@added(Versions.v2026_09_01_preview)
@operationId("ServiceGroups_ListAncestors")
@action("listAncestors")
@sharedRoute
listAncestorsPaged is ArmResourceActionSync<
Comment thread
alexchro93 marked this conversation as resolved.
ServiceGroup,
ListAncestorsRequest,
ArmResponse<ListAncestorsResponse>,
BaseParameters = Azure.ResourceManager.Foundations.TenantBaseParameters
>;

/**
* List the descendant serviceGroups of the serviceGroup, ordered by hierarchy.
*
* This is a paginated POST action. When the response contains a skipToken,
* more results are available; callers must re-POST to the same listDescendants
* URL with that skipToken value in the request body to fetch the next page.
* When skipToken is absent, the current page is the last page. SDKs do not
* natively support POST-based pagination, so callers must loop manually.
*/
@added(Versions.v2026_09_01_preview)
listDescendants is ArmResourceActionSync<
ServiceGroup,
ListDescendantsRequest,
ArmResponse<ListDescendantsResponse>,
BaseParameters = Azure.ResourceManager.Foundations.TenantBaseParameters
>;

/**
* List the members of the serviceGroup. Members are entities linked to the
* service group via a Microsoft.Relationships resource
* (Microsoft.Relationships/serviceGroupMember for direct members, or
* Microsoft.Relationships/contains for members included transitively via a
* container). Descendant service groups are not returned by this action;
* use listDescendants to enumerate nested service groups.
*
* This is a paginated POST action. When the response contains a skipToken,
* more results are available; callers must re-POST to the same listMembers
* URL with that skipToken value in the request body to fetch the next page.
* When skipToken is absent, the current page is the last page. SDKs do not
* natively support POST-based pagination, so callers must loop manually.
*/
@added(Versions.v2026_09_01_preview)
listMembers is ArmResourceActionSync<
ServiceGroup,
ListMembersRequest,
ArmResponse<ListMembersResponse>,
BaseParameters = Azure.ResourceManager.Foundations.TenantBaseParameters
>;
}

@@doc(ServiceGroup.name, "ServiceGroup Name.");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"parameters": {
"api-version": "2026-09-01-preview",
"serviceGroupName": "20000000-0001-0000-0000-000000000000"
},
"responses": {
"202": {
"headers": {
"Location": "https://management.azure.com/providers/Microsoft.Management/operationResults/delete/serviceGroups/20000000-0001-0000-0000-000000000000?api-version=2026-09-01-preview"
}
},
"204": {}
},
"operationId": "DeleteServiceGroup",
"title": "DeleteServiceGroup"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"parameters": {
"api-version": "2026-09-01-preview",
"serviceGroupName": "20000000-0001-0000-0000-000000000000"
},
"responses": {
"200": {
"body": {
"name": "20000000-0001-0000-0000-000000000000",
"type": "Microsoft.Management/serviceGroups",
"id": "/providers/Microsoft.Management/serviceGroups/20000000-0001-0000-0000-000000000000",
"properties": {
"displayName": "ServiceGroup 1 Tenant 2",
"parent": {
"resourceId": "/providers/Microsoft.Management/serviceGroups/RootGroup"
},
"provisioningState": "Succeeded"
}
}
}
},
"operationId": "ServiceGroups_Get",
"title": "GetServiceGroup"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"parameters": {
"api-version": "2026-09-01-preview",
"serviceGroupName": "20000000-0001-0000-0000-000000000000",
"body": {}
},
"responses": {
"200": {
"body": {
"value": [
{
"name": "Ancestor1",
"type": "Microsoft.Management/serviceGroups",
"id": "/providers/Microsoft.Management/serviceGroups/Ancestor1",
"properties": {
"displayName": "ServiceGroup Ancestor1",
"criticality": 0
}
},
{
"name": "Ancestor2",
"type": "Microsoft.Management/serviceGroups",
"id": "/providers/Microsoft.Management/serviceGroups/Ancestor2",
"properties": {
"displayName": "ServiceGroup Ancestor2"
}
}
],
"skipToken": "eyJsYXN0TGVmdEluZGV4Ijo0LjAsInJpZ2h0SW5kZXgiOjguMH0="
}
}
},
"operationId": "ServiceGroups_ListAncestors",
"title": "ListServiceGroupAncestors"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{
"parameters": {
"api-version": "2026-09-01-preview",
"serviceGroupName": "root",
"body": {}
},
"responses": {
"200": {
"body": {
"value": [
{
"id": "/providers/Microsoft.Management/serviceGroups/child-1",
"type": "Microsoft.Management/serviceGroups",
"name": "child-1",
"kind": "Application",
"tags": {
"team": "platform",
"env": "prod"
},
"properties": {
"displayName": "Child Service Group 1",
"parent": {
"resourceId": "/providers/Microsoft.Management/serviceGroups/root"
},
"provisioningState": "Succeeded"
}
},
{
"id": "/providers/Microsoft.Management/serviceGroups/grandchild-1",
"type": "Microsoft.Management/serviceGroups",
"name": "grandchild-1",
"kind": "Service",
"tags": {
"team": "data",
"costCenter": "12345"
},
"properties": {
"displayName": "Grandchild Service Group 1",
"parent": {
"resourceId": "/providers/Microsoft.Management/serviceGroups/child-1"
},
"provisioningState": "Succeeded"
}
}
],
"skipToken": "eyJsYXN0TGVmdEluZGV4Ijo0LjAsInJpZ2h0SW5kZXgiOjguMH0="
}
}
},
"operationId": "ServiceGroups_ListDescendants",
"title": "ListServiceGroupDescendants"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"parameters": {
"api-version": "2026-09-01-preview",
"serviceGroupName": "root-sg",
"body": {
"expand": "allMembers"
}
},
"responses": {
"200": {
"body": {
"value": [
{
"id": "/subscriptions/sub-a/resourceGroups/rg1/providers/Microsoft.KeyVault/vaults/myVault"
},
{
"id": "/subscriptions/sub-a/resourceGroups/rg2"
},
{
"id": "/subscriptions/sub-a/resourceGroups/rg2/providers/Microsoft.Storage/storageAccounts/myStorage"
},
{
"id": "/subscriptions/sub-b/resourceGroups/rg3/providers/Microsoft.Sql/servers/sqlServer1"
}
],
"skipToken": "eyJsYXN0TGVmdEluZGV4Ijo0LjAsInJpZ2h0SW5kZXgiOjguMH0="
}
}
},
"operationId": "ServiceGroups_ListMembers",
"title": "ListServiceGroupMembers"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{
"parameters": {
"api-version": "2026-09-01-preview",
"serviceGroupName": "ServiceGroup1",
"updateServiceGroupRequest": {
"properties": {
"displayName": "ServiceGroup 1 Name",
"criticality": 2
},
"tags": {
"tag1": "value1",
"tag2": "value2"
}
}
},
"responses": {
"200": {
"body": {
"name": "ServiceGroup1",
"type": "Microsoft.Management/serviceGroups",
"id": "/providers/Microsoft.Management/serviceGroups/ServiceGroup1",
"kind": "App",
"properties": {
"displayName": "ServiceGroup 1 Name",
"criticality": 2,
"parent": {
"resourceId": "/providers/Microsoft.Management/serviceGroups/RootGroup"
},
"provisioningState": "Succeeded"
},
"tags": {
"tag1": "value1",
"tag2": "value2"
}
}
},
"202": {
"headers": {
"location": "https://management.azure.com/providers/Microsoft.Management/operationResults/update/serviceGroups/ServiceGroup1?api-version=2026-09-01-preview"
}
}
},
"operationId": "UpdateServiceGroup",
"title": "PatchServiceGroup"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
{
"parameters": {
"api-version": "2026-09-01-preview",
"createServiceGroupRequest": {
"properties": {
"displayName": "ServiceGroup 1 Name",
"criticality": 1,
"parent": {
"resourceId": "/providers/Microsoft.Management/serviceGroups/RootGroup"
}
}
},
"serviceGroupName": "ServiceGroup1"
},
"responses": {
"200": {
"body": {
"name": "ServiceGroup1",
"type": "Microsoft.Management/serviceGroups",
"id": "/providers/Microsoft.Management/serviceGroups/ServiceGroup1",
"properties": {
"displayName": "ServiceGroup 1 Name",
"criticality": 1,
"parent": {
"resourceId": "/providers/Microsoft.Management/serviceGroups/RootGroup"
},
"provisioningState": "Succeeded"
}
}
},
"201": {
"body": {
"name": "ServiceGroup1",
"type": "Microsoft.Management/serviceGroups",
"id": "/providers/Microsoft.Management/serviceGroups/ServiceGroup1",
"properties": {
"displayName": "ServiceGroup 1 Name",
"criticality": 1,
"parent": {
"resourceId": "/providers/Microsoft.Management/serviceGroups/RootGroup"
},
"provisioningState": "Succeeded"
}
}
}
},
"operationId": "CreateOrUpdateServiceGroup",
"title": "PutServiceGroup"
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,9 @@ enum Versions {
* The 2024-02-01-preview API version.
*/
v2024_02_01_preview: "2024-02-01-preview",

/**
* The 2026-09-01-preview API version.
*/
v2026_09_01_preview: "2026-09-01-preview",
}
Loading