Skip to content

New command: spo file archive. Closes #7175#7192

Open
Saurabh7019 wants to merge 1 commit intopnp:mainfrom
Saurabh7019:issue-7175
Open

New command: spo file archive. Closes #7175#7192
Saurabh7019 wants to merge 1 commit intopnp:mainfrom
Saurabh7019:issue-7175

Conversation

@Saurabh7019
Copy link
Copy Markdown
Contributor

Closes #7175

@Saurabh7019 Saurabh7019 marked this pull request as ready for review April 5, 2026 19:10
@milanholemans
Copy link
Copy Markdown
Contributor

Awesome work @Saurabh7019! We'll try to check it ASAP.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a new SharePoint Online command (m365 spo file archive) to archive a file (by server-relative URL or UniqueId), including documentation, command constant wiring, Dev Proxy API spec updates, and a full unit test suite.

Changes:

  • Added spo file archive command implementation with Zod-based option parsing and confirmation prompt support.
  • Added Mocha tests covering validation, confirmation flow, success paths (by URL / by ID), and error handling.
  • Updated docs navigation + new command reference page, and extended the Dev Proxy SharePoint API spec.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/m365/spo/commands/file/file-archive.ts Implements the new spo file archive command and SharePoint REST interactions to resolve list/item and call Archive.
src/m365/spo/commands/file/file-archive.spec.ts Adds unit tests for option validation, prompting behavior, success cases, and error handling.
src/m365/spo/commands.ts Registers the command name constant FILE_ARCHIVE.
docs/src/config/sidebars.ts Adds the command doc to the SPO “file” commands sidebar.
docs/docs/cmd/spo/file/file-archive.mdx Adds end-user documentation for the new command, including examples and sample output.
.devproxy/api-specs/sharepoint.yaml Adds Dev Proxy spec entries for Archive and GetFileByServerRelativePath.

Comment on lines +78 to +86
let options: string = '?$select=ListId&$expand=ListItemAllFields';

if (url) {
const serverRelativePath = urlUtil.getServerRelativePath(webUrl, url);
options += `&@f='${formatting.encodeQueryParameter(serverRelativePath)}'`;
}

const fileInfo = await request.get<{ ListId: string; ListItemAllFields: { Id: number } }>({
url: requestUrl + options,
Copy link

Copilot AI Apr 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The local variable options (query string) is easy to confuse with the module-level exported options Zod schema. Rename this local variable to something more specific (for example, query/queryString) to improve readability and avoid accidental misuse during future edits.

Suggested change
let options: string = '?$select=ListId&$expand=ListItemAllFields';
if (url) {
const serverRelativePath = urlUtil.getServerRelativePath(webUrl, url);
options += `&@f='${formatting.encodeQueryParameter(serverRelativePath)}'`;
}
const fileInfo = await request.get<{ ListId: string; ListItemAllFields: { Id: number } }>({
url: requestUrl + options,
let queryString: string = '?$select=ListId&$expand=ListItemAllFields';
if (url) {
const serverRelativePath = urlUtil.getServerRelativePath(webUrl, url);
queryString += `&@f='${formatting.encodeQueryParameter(serverRelativePath)}'`;
}
const fileInfo = await request.get<{ ListId: string; ListItemAllFields: { Id: number } }>({
url: requestUrl + queryString,

Copilot uses AI. Check for mistakes.
Comment on lines +274 to +276
in: query
required: true
description: URL-encoded server-relative path to the file (via @f parameter)
Copy link

Copilot AI Apr 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This OpenAPI path defines {filePath} as a path parameter (it appears in the URL template) but the parameter is declared in: query. This makes the spec invalid/inconsistent for tooling. Define filePath as in: path (consistent with the existing .../$value endpoint below), or change the path template to use DecodedUrl=@f and declare the corresponding query parameter instead.

Suggested change
in: query
required: true
description: URL-encoded server-relative path to the file (via @f parameter)
in: path
required: true
description: URL-encoded server-relative path to the file

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

New command: spo file archive

3 participants