Repository navigation
RecoveryServicesBackup: add 2026-08-01 stable version with fetchInstantItemRecoveryOperationResult action (MSRC-114273) - #44639
Conversation
…cripts action - Add API version 2026-08-01 to the RecoveryServicesBackup versioning enum. - Add ItemLevelRecoveryConnections_ListMountScripts POST action on the recovery point resource, returning the ILR mount scripts (InstantItemRecoveryTarget). This is a dedicated, RBAC-gated endpoint for retrieving the iSCSI mount scripts instead of returning them inline on the operationsStatus (ILR provision) response. - Regenerate bms.json and examples for stable/2026-08-01 via TypeSpec. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Next Steps to Merge✅ All automated merging requirements have been met! To get your PR merged, see aka.ms/azsdk/specreview/merge.Comment generated by summarize-checks workflow run. |
API Change CheckAPIView identified API level changes in this PR and created the following API reviews
Comment generated by After APIView workflow run. |
…-2026-08-01-listmountscripts
The listMountScripts ARM action was modeled with a void request body, but
the BMS service requires an ARM-enveloped body { properties: { operationId } }
(operationId of the prior provisionInstantItemRecovery action). Add
ListMountScriptsRequestResource / ListMountScriptsRequest (mirroring the
sibling ILRRequestResource envelope) and wire it as the action request type.
Update both ListMountScripts examples and regenerate stable/2026-08-01/bms.json.
A new stable version must be based on the last STABLE version, not on the intermediary previews. TypeSpec's linear version chain was letting all 66 elements added in 2026-05-31-preview (the preview after 2026-05-01) bleed into the 2026-08-01 stable (e.g. CrossTenantVaultMapping, AccessType). Follow the established add/remove/add pattern (see the 2026-05-01 stable PR Azure#42428): append @removed(Versions.v2026_08_01) to every element carrying @added(Versions.v2026_05_31_preview), so those preview-only surfaces stay out of the new stable while remaining in 2026-05-31-preview. Result: stable/2026-08-01 now equals stable/2026-05-01 + the listMountScripts action only (paths 63->64, definitions 389->391); preview/2026-05-31-preview is unchanged.
…-2026-08-01-listmountscripts
…fetchInstantItemRecoveryOperationResult Aligns the ARM spec with the service rename (MSRC-114273): - action listMountScripts -> fetchInstantItemRecoveryOperationResult - models ListMountScriptsRequest[Resource] -> InstantItemRecoveryOperationResultRequest[Resource] - example renamed + operationId/title updated Wire fields (operationId, clientScripts) unchanged. bms.json regenerated in a follow-up commit.
…-2026-08-01-listmountscripts
…ntItemRecoveryOperationResult rename Recompiled via typespec-autorest. Renames path segment, operationId (ItemLevelRecoveryConnections_FetchInstantItemRecoveryOperationResult), request definitions, and x-ms-examples reference. Wire fields unchanged; no other operations affected.
TypeSpec suppressions requiring review (testing, non-blocking)Status: ❌ Approval required (currently under testing, review NOT enforced) — 5 suppressions
Changed suppressions (5)
For an overview of TypeSpec linting rules click here. 💬 Have feedback on the TypeSpec suppression flow? Let us know. |
…temRecoveryOperationResult Aligns the x-ms-examples body key with the generated swagger body parameter name, resolving ModelValidation REQUIRED_PARAMETER_EXAMPLE_NOT_FOUND.
Add the package-2026-08-01 tag referencing stable/2026-08-01/bms.json and advance the default + activestamp tags to it. Resolves Avocado UNREFERENCED_JSON_FILE and gives LintDiff a valid new-version target.
… resolve avocado MULTIPLE_DEFAULT_TAGS Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6d420238-f921-4e0f-ac6d-9acd4ed164b8
…ading to resolve avocado MULTIPLE_DEFAULT_TAGS" This reverts commit fd0e89f.
|
The two failing Swagger Avocado checks (
Advancing the default tag to |
Ravi Eda (ravimeda)
left a comment
There was a problem hiding this comment.
ARM API Review
Posting findings from the ARM API Reviewer agent (critic-verified, 3 iterations, converged) against commit f7995d5. See inline comments for findings 1, 4, 5, 6, 9, 10 and 11. Findings 2, 3, 7 and 8 concern lines that are unchanged in this PR diff, or live in stable/2026-08-01/bms.json whose diff GitHub omits due to file size, and are posted as top-level PR comments rather than inline.
|
[EXISTING] 🔴 Blocking [§6.8 / §7.1 / §10.3]
Issue: The security objective of this PR is not represented in the contract. Blast radius: The PR body says the service will simply stop populating the field. There is a signal about that in the new operation description (line 2039), but none on the Classification reasoning: This issue also exists in the previous version - Suggested fix (preferred - deprecate in place). §10.3 (ARG003) states "DO NOT remove properties from a resource between API versions until the property usage has been fully deprecated... Instead, keep the property in the response and mark it as deprecated in the swagger description and documentation," and "All types and properties from previous API versions MUST be carried forward to new API versions." Excerpt - leave the /**
* Target details for file / folder restore. Deprecated: not populated from API version
* 2026-08-01 onward. Use the recovery point mount-scripts action to retrieve the scripts.
*/
recoveryTarget?: InstantItemRecoveryTarget;Suggested fix (stronger - only with sign-off). If the security team requires the property gone from the contract entirely, add Either way, a silent behavior change with no signal on the property is not acceptable. |
|
[EXISTING] 🔴 Blocking [SEC-SECRET-DETECT / §7.2]
Issue: Note the interlock: once Classification reasoning: This issue also exists in the previous version - Suggested fix: model ClientScriptForConnect {
/**
* File content of the client script for file / folder restore.
*/
@secret
scriptContent?: string;
// ...
}Trade-off to settle before applying: |
|
Himanshu Agarwal (@hiaga) please address doc preview error https://dev.azure.com/apidrop/Content%20CI/_build/results?buildId=624347 |
b5e809a to
1b5d55e
Compare
…yOperationResultRequest via @@clientName csharp -> ...Content Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6d420238-f921-4e0f-ac6d-9acd4ed164b8
1b5d55e to
b1c2ba8
Compare
Sandip Shahane (@sandipsh) resolved the API doc preview issue by spliting the other folder verison bump into a separate PR - #45921 |
…-2026-08-01-listmountscripts
|
Verdict: FAIL (protocol unavailable — cannot verify) I cannot produce a substantive verdict on the SKIP-COVERED / empty-posting-set proposal because the binding instructions I'm required to load do not exist in this repository checkout:
Only Per my own instructions, I must not claim this review was Critic-verified. I have not independently validated:
Action needed: restore the missing agent/protocol files (or point me at their correct location) so a real independent verification can be performed. Until then, treat the proposed SKIP-COVERED / empty-posting-set decision as unverified by the Critic, not approved.
|
ARM API Review SummaryReviewed PR #44639 at head SHA Approval labels observed:
This PR (RecoveryServicesBackup 2026-08-01: new posted-by: arm-api-reviewer-agent | rule: summary | severity: suggestion | classification: existing | critic: unknown | head-sha: 98f9dff
|
✅ Release Plan Created
|
Summary
Adds a new stable API version
2026-08-01toMicrosoft.RecoveryServices/RecoveryServicesBackupand introduces a dedicated, RBAC-gated action to retrieve Instant Item Recovery (ILR) mount scripts:ItemLevelRecoveryConnections_ListMountScriptsPOST .../recoveryPoints/{recoveryPointId}/listMountScripts→ returnsInstantItemRecoveryTarget(the ILRclientScripts).operationsStatus(ILR provision) response, which is a broad operation-status read. This new action moves script retrieval to a dedicated, permission-scoped endpoint.Change classification
InstantItemRecoveryTarget.clientScriptsremains an optional property in the schema. The service will simply stop populating it on theoperationsStatusresponse in the new version; the field is not removed (removal would be breaking). This keeps the change non-breaking while still meeting the security requirement.TypeSpec
recoveryservicesbackupis TypeSpec-authored;bms.jsonis generated. Source edits:main.tsp— addedv2026_08_01to theVersionsenum.RecoveryPointResource.tsp— added thelistMountScriptsaction gated with@added(Versions.v2026_08_01).Generated
stable/2026-08-01/bms.json+ examples viatsp compile.ARM modeling notes
ArmResourceActionSync) returning the resource payload in the200body — consistent with how the siblingprovision/revokeILR actions are modeled on the sameRecoveryPointResource, and with ARM guidance for POST actions that return data.InstantItemRecoveryTargetmodel as the response, matching the shape already returned via the ILR provisionoperationsStatusextended info, so no new response contract is introduced.