diff --git a/package.json b/package.json
index 20cf3c65c..a2d07525a 100644
--- a/package.json
+++ b/package.json
@@ -286,10 +286,11 @@
"docker:publish-manifest-latest": "cross-var docker manifest push xstoreazurite.azurecr.io/public/azure-storage/azurite:latest",
"prepare": "npm run build",
"build": "tsc",
- "build:autorest:debug": "autorest ./swagger/blob.md --typescript --typescript.debugger --use=S:/GitHub/XiaoningLiu/autorest.typescript.server",
- "build:autorest:blob": "autorest ./swagger/blob.md --typescript --use=S:/GitHub/XiaoningLiu/autorest.typescript.server",
- "build:autorest:queue": "autorest ./swagger/queue.md --typescript --use=S:/GitHub/XiaoningLiu/autorest.typescript.server",
- "build:autorest:table": "autorest ./swagger/table.md --typescript --use=S:/GitHub/XiaoningLiu/autorest.typescript.server",
+ "build:autorest:debug": "autorest ./swagger/blob.md --typescript --typescript.debugger --use=../autorest.typescript.server",
+ "build:autorest:blob": "autorest ./swagger/blob.md --typescript --use=../autorest.typescript.server",
+ "build:autorest:queue": "autorest ./swagger/queue.md --typescript --use=../autorest.typescript.server",
+ "build:autorest:table": "autorest ./swagger/table.md --typescript --use=../autorest.typescript.server",
+ "build:autorest:dfs": "autorest ./swagger/dfs.md --typescript --use=../autorest.typescript.server",
"build:exe": "node ./scripts/buildExe.js",
"build:linux": "node ./scripts/buildLinux.js",
"watch": "tsc -watch -p ./",
diff --git a/src/dfs/generated/Context.ts b/src/dfs/generated/Context.ts
new file mode 100644
index 000000000..243763cfd
--- /dev/null
+++ b/src/dfs/generated/Context.ts
@@ -0,0 +1,143 @@
+import Operation from './artifacts/operation';
+import IRequest from './IRequest';
+import IResponse from './IResponse';
+
+export interface IHandlerParameters {
+ [key: string]: any;
+}
+
+/**
+ * Context holds generated server context information.
+ * Every incoming HTTP request will initialize a new context.
+ *
+ * @export
+ * @class Context
+ */
+export default class Context {
+ public readonly context: any;
+ public readonly path: string;
+
+ /**
+ * Creates an instance of Context.
+ * Context holds generated server context information.
+ * Every incoming HTTP request will initialize a new context.
+ *
+ * @param {Context} context An existing Context
+ * @memberof Context
+ */
+ public constructor(context: Context);
+
+ /**
+ * Creates an instance of Context.
+ * Context holds generated server context information.
+ * Every incoming HTTP request will initialize a new context.
+ *
+ * @param {Object} holder Holder is an Object which used to keep context information
+ * @param {string} [path="context"] holder[path] is used as context object by default
+ * @param {IRequest} [req]
+ * @param {IResponse} [res]
+ * @memberof Context
+ */
+ public constructor(
+ holder: object,
+ path: string,
+ req?: IRequest,
+ res?: IResponse
+ );
+
+ public constructor(
+ holderOrContext: object | Context,
+ path: string = "context",
+ req?: IRequest,
+ res?: IResponse
+ ) {
+ if (holderOrContext instanceof Context) {
+ this.context = holderOrContext.context;
+ this.path = holderOrContext.path;
+ } else {
+ const context = holderOrContext as any;
+ this.path = path;
+
+ if (context[this.path] === undefined) {
+ context[this.path] = {};
+ }
+
+ if (typeof context[this.path] !== "object") {
+ throw new TypeError(
+ `Initialize Context error because holder.${this.path} is not an object.`
+ );
+ }
+
+ this.context = context[this.path];
+
+ this.request = req;
+ this.response = res;
+ }
+ }
+
+ public get operation(): Operation | undefined {
+ return this.context.operation;
+ }
+
+ public set operation(operation: Operation | undefined) {
+ this.context.operation = operation;
+ }
+
+ public set request(request: IRequest | undefined) {
+ this.context.request = request;
+ }
+
+ public get request(): IRequest | undefined {
+ return this.context.request;
+ }
+
+ public get dispatchPattern(): string | undefined {
+ return this.context.dispatchPattern;
+ }
+
+ public set dispatchPattern(path: string | undefined) {
+ this.context.dispatchPattern = path;
+ }
+
+ public set response(response: IResponse | undefined) {
+ this.context.response = response;
+ }
+
+ public get response(): IResponse | undefined {
+ return this.context.response;
+ }
+
+ public get handlerParameters(): IHandlerParameters | undefined {
+ return this.context.handlerParameters;
+ }
+
+ public set handlerParameters(
+ handlerParameters: IHandlerParameters | undefined
+ ) {
+ this.context.handlerParameters = handlerParameters;
+ }
+
+ public get handlerResponses(): any {
+ return this.context.handlerResponses;
+ }
+
+ public set handlerResponses(handlerResponses: any) {
+ this.context.handlerResponses = handlerResponses;
+ }
+
+ public get contextId(): string | undefined {
+ return this.context.contextID;
+ }
+
+ public set contextId(contextID: string | undefined) {
+ this.context.contextID = contextID;
+ }
+
+ public set startTime(startTime: Date | undefined) {
+ this.context.startTime = startTime;
+ }
+
+ public get startTime(): Date | undefined {
+ return this.context.startTime;
+ }
+}
diff --git a/src/dfs/generated/ExpressMiddlewareFactory.ts b/src/dfs/generated/ExpressMiddlewareFactory.ts
new file mode 100644
index 000000000..8ece08df0
--- /dev/null
+++ b/src/dfs/generated/ExpressMiddlewareFactory.ts
@@ -0,0 +1,162 @@
+import { ErrorRequestHandler, NextFunction, Request, RequestHandler, Response } from 'express';
+
+import Context from './Context';
+import ExpressRequestAdapter from './ExpressRequestAdapter';
+import ExpressResponseAdapter from './ExpressResponseAdapter';
+import IHandlers from './handlers/IHandlers';
+import deserializerMiddleware from './middleware/deserializer.middleware';
+import dispatchMiddleware from './middleware/dispatch.middleware';
+import endMiddleware from './middleware/end.middleware';
+import errorMiddleware from './middleware/error.middleware';
+import HandlerMiddlewareFactory from './middleware/HandlerMiddlewareFactory';
+import serializerMiddleware from './middleware/serializer.middleware';
+import MiddlewareFactory from './MiddlewareFactory';
+import ILogger from './utils/ILogger';
+
+/**
+ * ExpressMiddlewareFactory will generate Express compatible middleware according to swagger definitions.
+ * Generated middleware MUST be used by strict order:
+ * * dispatchMiddleware
+ * * DeserializerMiddleware
+ * * HandlerMiddleware
+ * * SerializerMiddleware
+ * * ErrorMiddleware
+ * * EndMiddleware
+ *
+ * @export
+ * @class MiddlewareFactory
+ */
+export default class ExpressMiddlewareFactory extends MiddlewareFactory {
+ /**
+ * Creates an instance of MiddlewareFactory.
+ *
+ * @param {ILogger} logger A valid logger
+ * @param {string} [contextPath="default_context"] Optional. res.locals[contextPath] will be used to hold context
+ * @memberof MiddlewareFactory
+ */
+ public constructor(
+ logger: ILogger,
+ private readonly contextPath: string = "default_context"
+ ) {
+ super(logger);
+ }
+
+ /**
+ * DispatchMiddleware is the 1s middleware should be used among other generated middleware.
+ *
+ * @returns {RequestHandler}
+ * @memberof MiddlewareFactory
+ */
+ public createDispatchMiddleware(): RequestHandler {
+ return (req: Request, res: Response, next: NextFunction) => {
+ req.baseUrl
+ const request = new ExpressRequestAdapter(req);
+ const response = new ExpressResponseAdapter(res);
+ dispatchMiddleware(
+ new Context(res.locals, this.contextPath, request, response),
+ request,
+ next,
+ this.logger
+ );
+ };
+ }
+
+ /**
+ * DeserializerMiddleware is the 2nd middleware should be used among other generated middleware.
+ *
+ * @returns {RequestHandler}
+ * @memberof MiddlewareFactory
+ */
+ public createDeserializerMiddleware(): RequestHandler {
+ return (req: Request, res: Response, next: NextFunction) => {
+ const request = new ExpressRequestAdapter(req);
+ const response = new ExpressResponseAdapter(res);
+ deserializerMiddleware(
+ new Context(res.locals, this.contextPath, request, response),
+ request,
+ next,
+ this.logger
+ );
+ };
+ }
+
+ /**
+ * HandlerMiddleware is the 3rd middleware should be used among other generated middleware.
+ *
+ * @param {IHandlers} handlers
+ * @returns {RequestHandler}
+ * @memberof MiddlewareFactory
+ */
+ public createHandlerMiddleware(handlers: IHandlers): RequestHandler {
+ const handlerMiddlewareFactory = new HandlerMiddlewareFactory(
+ handlers,
+ this.logger
+ );
+ return (req: Request, res: Response, next: NextFunction) => {
+ const request = new ExpressRequestAdapter(req);
+ const response = new ExpressResponseAdapter(res);
+ handlerMiddlewareFactory.createHandlerMiddleware()(
+ new Context(res.locals, this.contextPath, request, response),
+ next
+ );
+ };
+ }
+
+ /**
+ * SerializerMiddleware is the 4st middleware should be used among other generated middleware.
+ *
+ * @returns {RequestHandler}
+ * @memberof MiddlewareFactory
+ */
+ public createSerializerMiddleware(): RequestHandler {
+ return (req: Request, res: Response, next: NextFunction) => {
+ const request = new ExpressRequestAdapter(req);
+ const response = new ExpressResponseAdapter(res);
+ serializerMiddleware(
+ new Context(res.locals, this.contextPath, request, response),
+ new ExpressResponseAdapter(res),
+ next,
+ this.logger
+ );
+ };
+ }
+
+ /**
+ * ErrorMiddleware is the 5st middleware should be used among other generated middleware.
+ *
+ * @returns {ErrorRequestHandler}
+ * @memberof MiddlewareFactory
+ */
+ public createErrorMiddleware(): ErrorRequestHandler {
+ return (err: Error, req: Request, res: Response, next: NextFunction) => {
+ const request = new ExpressRequestAdapter(req);
+ const response = new ExpressResponseAdapter(res);
+ errorMiddleware(
+ new Context(res.locals, this.contextPath, request, response),
+ err,
+ new ExpressRequestAdapter(req),
+ new ExpressResponseAdapter(res),
+ next,
+ this.logger
+ );
+ };
+ }
+
+ /**
+ * EndMiddleware is the 6st middleware should be used among other generated middleware.
+ *
+ * @returns {RequestHandler}
+ * @memberof MiddlewareFactory
+ */
+ public createEndMiddleware(): RequestHandler {
+ return (req: Request, res: Response) => {
+ const request = new ExpressRequestAdapter(req);
+ const response = new ExpressResponseAdapter(res);
+ endMiddleware(
+ new Context(res.locals, this.contextPath, request, response),
+ new ExpressResponseAdapter(res),
+ this.logger
+ );
+ };
+ }
+}
diff --git a/src/dfs/generated/ExpressRequestAdapter.ts b/src/dfs/generated/ExpressRequestAdapter.ts
new file mode 100644
index 000000000..75861cb5a
--- /dev/null
+++ b/src/dfs/generated/ExpressRequestAdapter.ts
@@ -0,0 +1,57 @@
+import { Request } from 'express';
+
+import IRequest, { HttpMethod } from './IRequest';
+
+export default class ExpressRequestAdapter implements IRequest {
+ public constructor(private readonly req: Request) {}
+
+ public getMethod(): HttpMethod {
+ return this.req.method.toUpperCase() as HttpMethod;
+ }
+
+ public getUrl(): string {
+ return this.req.url;
+ }
+
+ public getEndpoint(): string {
+ return `${this.req.protocol}://${this.getHeader("host") ||
+ this.req.hostname}`;
+ }
+
+ public getPath(): string {
+ return this.req.path;
+ }
+
+ public getBodyStream(): NodeJS.ReadableStream {
+ return this.req;
+ }
+
+ public getBody(): string | undefined {
+ return this.req.body;
+ }
+
+ public setBody(body: string | undefined): ExpressRequestAdapter {
+ this.req.body = body;
+ return this;
+ }
+
+ public getHeader(field: string): string | undefined {
+ return this.req.header(field);
+ }
+
+ public getHeaders(): { [header: string]: string | string[] | undefined } {
+ return this.req.headers;
+ }
+
+ public getRawHeaders(): string[] {
+ return this.req.rawHeaders;
+ }
+
+ public getQuery(key: string): string | undefined {
+ return this.req.query[key];
+ }
+
+ public getProtocol(): string {
+ return this.req.protocol;
+ }
+}
diff --git a/src/dfs/generated/ExpressResponseAdapter.ts b/src/dfs/generated/ExpressResponseAdapter.ts
new file mode 100644
index 000000000..01a12bc23
--- /dev/null
+++ b/src/dfs/generated/ExpressResponseAdapter.ts
@@ -0,0 +1,66 @@
+import { Response } from 'express';
+import { OutgoingHttpHeaders } from 'http';
+
+import IResponse from './IResponse';
+
+export default class ExpressResponseAdapter implements IResponse {
+ public constructor(private readonly res: Response) {}
+
+ public setStatusCode(code: number): IResponse {
+ this.res.status(code);
+ return this;
+ }
+
+ public getStatusCode(): number {
+ return this.res.statusCode;
+ }
+
+ public setStatusMessage(message: string): IResponse {
+ this.res.statusMessage = message;
+ return this;
+ }
+
+ public getStatusMessage(): string {
+ return this.res.statusMessage;
+ }
+
+ public setHeader(
+ field: string,
+ value?: string | string[] | undefined | number | boolean
+ ): IResponse {
+ if (typeof value === "number") {
+ value = `${value}`;
+ }
+
+ if (typeof value === "boolean") {
+ value = `${value}`;
+ }
+
+ // Cannot remove if block because of a potential TypeScript bug
+ if (typeof value === "string" || value instanceof Array) {
+ this.res.setHeader(field, value);
+ }
+ return this;
+ }
+
+ public getHeader(field: string): number | string | string[] | undefined {
+ return this.res.getHeader(field);
+ }
+
+ public getHeaders(): OutgoingHttpHeaders {
+ return this.res.getHeaders();
+ }
+
+ public headersSent(): boolean {
+ return this.res.headersSent;
+ }
+
+ public setContentType(value: string): IResponse {
+ this.res.setHeader("content-type", value);
+ return this;
+ }
+
+ public getBodyStream(): NodeJS.WritableStream {
+ return this.res;
+ }
+}
diff --git a/src/dfs/generated/IRequest.ts b/src/dfs/generated/IRequest.ts
new file mode 100644
index 000000000..c281157bf
--- /dev/null
+++ b/src/dfs/generated/IRequest.ts
@@ -0,0 +1,26 @@
+export type HttpMethod =
+ | "GET"
+ | "HEAD"
+ | "POST"
+ | "PUT"
+ | "DELETE"
+ | "CONNECT"
+ | "OPTIONS"
+ | "TRACE"
+ | "MERGE"
+ | "PATCH";
+
+export default interface IRequest {
+ getMethod(): HttpMethod;
+ getUrl(): string;
+ getEndpoint(): string;
+ getPath(): string;
+ getBodyStream(): NodeJS.ReadableStream;
+ setBody(body: string | undefined): IRequest;
+ getBody(): string | undefined;
+ getHeader(field: string): string | undefined;
+ getHeaders(): { [header: string]: string | string[] | undefined };
+ getRawHeaders(): string[];
+ getQuery(key: string): string | undefined;
+ getProtocol(): string;
+}
diff --git a/src/dfs/generated/IResponse.ts b/src/dfs/generated/IResponse.ts
new file mode 100644
index 000000000..0998329de
--- /dev/null
+++ b/src/dfs/generated/IResponse.ts
@@ -0,0 +1,17 @@
+import { OutgoingHttpHeaders } from 'http';
+
+export default interface IResponse {
+ setStatusCode(code: number): IResponse;
+ getStatusCode(): number;
+ setStatusMessage(message: string): IResponse;
+ getStatusMessage(): string;
+ setHeader(
+ field: string,
+ value?: string | string[] | undefined | number | boolean
+ ): IResponse;
+ getHeader(field: string): number | string | string[] | undefined;
+ getHeaders(): OutgoingHttpHeaders;
+ headersSent(): boolean;
+ setContentType(value: string | undefined): IResponse;
+ getBodyStream(): NodeJS.WritableStream;
+}
diff --git a/src/dfs/generated/MiddlewareFactory.ts b/src/dfs/generated/MiddlewareFactory.ts
new file mode 100644
index 000000000..048a63f0e
--- /dev/null
+++ b/src/dfs/generated/MiddlewareFactory.ts
@@ -0,0 +1,91 @@
+import IHandlers from './handlers/IHandlers';
+import ILogger from './utils/ILogger';
+
+export type Callback = (...args: any[]) => any;
+export type MiddlewareTypes = Callback;
+export type NextFunction = Callback;
+
+/**
+ * MiddlewareFactory will generate middleware according to swagger definitions.
+ *
+ * Generated middleware MUST be used by strict order when you build your HTTP server:
+ * * DispatchMiddleware
+ * * DeserializerMiddleware
+ * * HandlerMiddleware
+ * * SerializerMiddleware
+ * * ErrorMiddleware
+ * * EndMiddleware
+ *
+ * To compatible with different Node.js server frameworks, such as Express or Koa,
+ * Extend this class and implement interfaces IRequest and IResponse as adapters.
+ *
+ * As above default generated middleware is callback style, you may want to wrap them into promise
+ * style for Koa like frameworks. Generated middleware will always trigger callback method at last,
+ * and pass all error object as the first parameter of callback method.
+ *
+ * We already provide implementation for Express framework. Refer to:
+ * * ExpressMiddlewareFactory
+ * * ExpressRequestAdapter
+ * * ExpressResponseAdapter
+ *
+ * @export
+ * @class MiddlewareFactory
+ */
+export default abstract class MiddlewareFactory {
+ /**
+ * Creates an instance of MiddlewareFactory.
+ *
+ * @param {ILogger} logger A valid logger
+ * @memberof MiddlewareFactory
+ */
+ public constructor(protected readonly logger: ILogger) {}
+
+ /**
+ * DispatchMiddleware is the 1s middleware should be used among other generated middleware.
+ *
+ * @returns {MiddlewareTypes}
+ * @memberof MiddlewareFactory
+ */
+ public abstract createDispatchMiddleware(): MiddlewareTypes;
+
+ /**
+ * DeserializerMiddleware is the 2nd middleware should be used among other generated middleware.
+ *
+ * @returns {MiddlewareTypes}
+ * @memberof MiddlewareFactory
+ */
+ public abstract createDeserializerMiddleware(): MiddlewareTypes;
+
+ /**
+ * HandlerMiddleware is the 3rd middleware should be used among other generated middleware.
+ *
+ * @param {IHandlers} handlers
+ * @returns {MiddlewareTypes}
+ * @memberof MiddlewareFactory
+ */
+ public abstract createHandlerMiddleware(handlers: IHandlers): MiddlewareTypes;
+
+ /**
+ * SerializerMiddleware is the 4st middleware should be used among other generated middleware.
+ *
+ * @returns {MiddlewareTypes}
+ * @memberof MiddlewareFactory
+ */
+ public abstract createSerializerMiddleware(): MiddlewareTypes;
+
+ /**
+ * ErrorMiddleware is the 5st middleware should be used among other generated middleware.
+ *
+ * @returns {MiddlewareTypes}
+ * @memberof MiddlewareFactory
+ */
+ public abstract createErrorMiddleware(): MiddlewareTypes;
+
+ /**
+ * EndMiddleware is the 6st middleware should be used among other generated middleware.
+ *
+ * @returns {MiddlewareTypes}
+ * @memberof MiddlewareFactory
+ */
+ public abstract createEndMiddleware(): MiddlewareTypes;
+}
diff --git a/src/dfs/generated/artifacts/mappers.ts b/src/dfs/generated/artifacts/mappers.ts
new file mode 100644
index 000000000..372e4da1b
--- /dev/null
+++ b/src/dfs/generated/artifacts/mappers.ts
@@ -0,0 +1,2134 @@
+/*
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+// tslint:disable:object-literal-sort-keys
+
+import * as msRest from "@azure/ms-rest-js";
+
+export const AclFailedEntry: msRest.CompositeMapper = {
+ serializedName: "AclFailedEntry",
+ type: {
+ name: "Composite",
+ className: "AclFailedEntry",
+ modelProperties: {
+ name: {
+ xmlName: "name",
+ serializedName: "name",
+ type: {
+ name: "String"
+ }
+ },
+ type: {
+ xmlName: "type",
+ serializedName: "type",
+ type: {
+ name: "String"
+ }
+ },
+ errorMessage: {
+ xmlName: "errorMessage",
+ serializedName: "errorMessage",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const SetAccessControlRecursiveResponse: msRest.CompositeMapper = {
+ serializedName: "SetAccessControlRecursiveResponse",
+ type: {
+ name: "Composite",
+ className: "SetAccessControlRecursiveResponse",
+ modelProperties: {
+ directoriesSuccessful: {
+ xmlName: "directoriesSuccessful",
+ serializedName: "directoriesSuccessful",
+ type: {
+ name: "Number"
+ }
+ },
+ filesSuccessful: {
+ xmlName: "filesSuccessful",
+ serializedName: "filesSuccessful",
+ type: {
+ name: "Number"
+ }
+ },
+ failureCount: {
+ xmlName: "failureCount",
+ serializedName: "failureCount",
+ type: {
+ name: "Number"
+ }
+ },
+ failedEntries: {
+ xmlName: "failedEntries",
+ xmlElementName: "AclFailedEntry",
+ serializedName: "failedEntries",
+ type: {
+ name: "Sequence",
+ element: {
+ type: {
+ name: "Composite",
+ className: "AclFailedEntry"
+ }
+ }
+ }
+ }
+ }
+ }
+};
+
+export const Path: msRest.CompositeMapper = {
+ serializedName: "Path",
+ type: {
+ name: "Composite",
+ className: "Path",
+ modelProperties: {
+ name: {
+ xmlName: "name",
+ serializedName: "name",
+ type: {
+ name: "String"
+ }
+ },
+ isDirectory: {
+ xmlName: "isDirectory",
+ serializedName: "isDirectory",
+ defaultValue: false,
+ type: {
+ name: "Boolean"
+ }
+ },
+ lastModified: {
+ xmlName: "lastModified",
+ serializedName: "lastModified",
+ type: {
+ name: "String"
+ }
+ },
+ eTag: {
+ xmlName: "eTag",
+ serializedName: "eTag",
+ type: {
+ name: "String"
+ }
+ },
+ contentLength: {
+ xmlName: "contentLength",
+ serializedName: "contentLength",
+ type: {
+ name: "Number"
+ }
+ },
+ owner: {
+ xmlName: "owner",
+ serializedName: "owner",
+ type: {
+ name: "String"
+ }
+ },
+ group: {
+ xmlName: "group",
+ serializedName: "group",
+ type: {
+ name: "String"
+ }
+ },
+ permissions: {
+ xmlName: "permissions",
+ serializedName: "permissions",
+ type: {
+ name: "String"
+ }
+ },
+ encryptionScope: {
+ xmlName: "EncryptionScope",
+ serializedName: "EncryptionScope",
+ type: {
+ name: "String"
+ }
+ },
+ creationTime: {
+ xmlName: "creationTime",
+ serializedName: "creationTime",
+ type: {
+ name: "String"
+ }
+ },
+ expiryTime: {
+ xmlName: "expiryTime",
+ serializedName: "expiryTime",
+ type: {
+ name: "String"
+ }
+ },
+ encryptionContext: {
+ xmlName: "EncryptionContext",
+ serializedName: "EncryptionContext",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const PathList: msRest.CompositeMapper = {
+ serializedName: "PathList",
+ type: {
+ name: "Composite",
+ className: "PathList",
+ modelProperties: {
+ paths: {
+ xmlName: "paths",
+ xmlElementName: "Path",
+ serializedName: "paths",
+ type: {
+ name: "Sequence",
+ element: {
+ type: {
+ name: "Composite",
+ className: "Path"
+ }
+ }
+ }
+ }
+ }
+ }
+};
+
+export const FileSystem: msRest.CompositeMapper = {
+ serializedName: "FileSystem",
+ type: {
+ name: "Composite",
+ className: "FileSystem",
+ modelProperties: {
+ name: {
+ xmlName: "name",
+ serializedName: "name",
+ type: {
+ name: "String"
+ }
+ },
+ lastModified: {
+ xmlName: "lastModified",
+ serializedName: "lastModified",
+ type: {
+ name: "String"
+ }
+ },
+ eTag: {
+ xmlName: "eTag",
+ serializedName: "eTag",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const BlobPrefix: msRest.CompositeMapper = {
+ serializedName: "BlobPrefix",
+ type: {
+ name: "Composite",
+ className: "BlobPrefix",
+ modelProperties: {
+ name: {
+ xmlName: "Name",
+ required: true,
+ serializedName: "Name",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const BlobPropertiesInternal: msRest.CompositeMapper = {
+ xmlName: "Properties",
+ serializedName: "BlobPropertiesInternal",
+ type: {
+ name: "Composite",
+ className: "BlobPropertiesInternal",
+ modelProperties: {
+ creationTime: {
+ xmlName: "Creation-Time",
+ serializedName: "Creation-Time",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ lastModified: {
+ xmlName: "Last-Modified",
+ required: true,
+ serializedName: "Last-Modified",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ etag: {
+ xmlName: "Etag",
+ required: true,
+ serializedName: "Etag",
+ type: {
+ name: "String"
+ }
+ },
+ contentLength: {
+ xmlName: "Content-Length",
+ serializedName: "Content-Length",
+ type: {
+ name: "Number"
+ }
+ },
+ contentType: {
+ xmlName: "Content-Type",
+ serializedName: "Content-Type",
+ type: {
+ name: "String"
+ }
+ },
+ contentEncoding: {
+ xmlName: "Content-Encoding",
+ serializedName: "Content-Encoding",
+ type: {
+ name: "String"
+ }
+ },
+ contentLanguage: {
+ xmlName: "Content-Language",
+ serializedName: "Content-Language",
+ type: {
+ name: "String"
+ }
+ },
+ contentMD5: {
+ xmlName: "Content-MD5",
+ serializedName: "Content-MD5",
+ type: {
+ name: "ByteArray"
+ }
+ },
+ contentDisposition: {
+ xmlName: "Content-Disposition",
+ serializedName: "Content-Disposition",
+ type: {
+ name: "String"
+ }
+ },
+ cacheControl: {
+ xmlName: "Cache-Control",
+ serializedName: "Cache-Control",
+ type: {
+ name: "String"
+ }
+ },
+ blobSequenceNumber: {
+ xmlName: "x-ms-blob-sequence-number",
+ serializedName: "x-ms-blob-sequence-number",
+ type: {
+ name: "Number"
+ }
+ },
+ copyId: {
+ xmlName: "CopyId",
+ serializedName: "CopyId",
+ type: {
+ name: "String"
+ }
+ },
+ copySource: {
+ xmlName: "CopySource",
+ serializedName: "CopySource",
+ type: {
+ name: "String"
+ }
+ },
+ copyProgress: {
+ xmlName: "CopyProgress",
+ serializedName: "CopyProgress",
+ type: {
+ name: "String"
+ }
+ },
+ copyCompletionTime: {
+ xmlName: "CopyCompletionTime",
+ serializedName: "CopyCompletionTime",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ copyStatusDescription: {
+ xmlName: "CopyStatusDescription",
+ serializedName: "CopyStatusDescription",
+ type: {
+ name: "String"
+ }
+ },
+ serverEncrypted: {
+ xmlName: "ServerEncrypted",
+ serializedName: "ServerEncrypted",
+ type: {
+ name: "Boolean"
+ }
+ },
+ incrementalCopy: {
+ xmlName: "IncrementalCopy",
+ serializedName: "IncrementalCopy",
+ type: {
+ name: "Boolean"
+ }
+ },
+ destinationSnapshot: {
+ xmlName: "DestinationSnapshot",
+ serializedName: "DestinationSnapshot",
+ type: {
+ name: "String"
+ }
+ },
+ deletedTime: {
+ xmlName: "DeletedTime",
+ serializedName: "DeletedTime",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ remainingRetentionDays: {
+ xmlName: "RemainingRetentionDays",
+ serializedName: "RemainingRetentionDays",
+ type: {
+ name: "Number"
+ }
+ },
+ accessTierInferred: {
+ xmlName: "AccessTierInferred",
+ serializedName: "AccessTierInferred",
+ type: {
+ name: "Boolean"
+ }
+ },
+ customerProvidedKeySha256: {
+ xmlName: "CustomerProvidedKeySha256",
+ serializedName: "CustomerProvidedKeySha256",
+ type: {
+ name: "String"
+ }
+ },
+ encryptionScope: {
+ xmlName: "EncryptionScope",
+ serializedName: "EncryptionScope",
+ type: {
+ name: "String"
+ }
+ },
+ accessTierChangeTime: {
+ xmlName: "AccessTierChangeTime",
+ serializedName: "AccessTierChangeTime",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ tagCount: {
+ xmlName: "TagCount",
+ serializedName: "TagCount",
+ type: {
+ name: "Number"
+ }
+ },
+ expiresOn: {
+ xmlName: "Expiry-Time",
+ serializedName: "Expiry-Time",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ isSealed: {
+ xmlName: "Sealed",
+ serializedName: "Sealed",
+ type: {
+ name: "Boolean"
+ }
+ },
+ lastAccessedOn: {
+ xmlName: "LastAccessTime",
+ serializedName: "LastAccessTime",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ deleteTime: {
+ xmlName: "DeleteTime",
+ serializedName: "DeleteTime",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ }
+ }
+ }
+};
+
+export const BlobItemInternal: msRest.CompositeMapper = {
+ xmlName: "Blob",
+ serializedName: "BlobItemInternal",
+ type: {
+ name: "Composite",
+ className: "BlobItemInternal",
+ modelProperties: {
+ name: {
+ xmlName: "Name",
+ required: true,
+ serializedName: "Name",
+ type: {
+ name: "String"
+ }
+ },
+ deleted: {
+ xmlName: "Deleted",
+ required: true,
+ serializedName: "Deleted",
+ type: {
+ name: "Boolean"
+ }
+ },
+ snapshot: {
+ xmlName: "Snapshot",
+ required: true,
+ serializedName: "Snapshot",
+ type: {
+ name: "String"
+ }
+ },
+ versionId: {
+ xmlName: "VersionId",
+ serializedName: "VersionId",
+ type: {
+ name: "String"
+ }
+ },
+ isCurrentVersion: {
+ xmlName: "IsCurrentVersion",
+ serializedName: "IsCurrentVersion",
+ type: {
+ name: "Boolean"
+ }
+ },
+ properties: {
+ xmlName: "Properties",
+ required: true,
+ serializedName: "Properties",
+ type: {
+ name: "Composite",
+ className: "BlobPropertiesInternal"
+ }
+ },
+ deletionId: {
+ xmlName: "DeletionId",
+ serializedName: "DeletionId",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const BlobHierarchyListSegment: msRest.CompositeMapper = {
+ xmlName: "Blobs",
+ serializedName: "BlobHierarchyListSegment",
+ type: {
+ name: "Composite",
+ className: "BlobHierarchyListSegment",
+ modelProperties: {
+ blobPrefixes: {
+ xmlName: "BlobPrefixes",
+ xmlElementName: "BlobPrefix",
+ serializedName: "BlobPrefixes",
+ type: {
+ name: "Sequence",
+ element: {
+ type: {
+ name: "Composite",
+ className: "BlobPrefix"
+ }
+ }
+ }
+ },
+ blobItems: {
+ xmlName: "BlobItems",
+ xmlElementName: "Blob",
+ required: true,
+ serializedName: "BlobItems",
+ type: {
+ name: "Sequence",
+ element: {
+ type: {
+ name: "Composite",
+ className: "BlobItemInternal"
+ }
+ }
+ }
+ }
+ }
+ }
+};
+
+export const ListBlobsHierarchySegmentResponse: msRest.CompositeMapper = {
+ xmlName: "EnumerationResults",
+ serializedName: "ListBlobsHierarchySegmentResponse",
+ type: {
+ name: "Composite",
+ className: "ListBlobsHierarchySegmentResponse",
+ modelProperties: {
+ serviceEndpoint: {
+ xmlIsAttribute: true,
+ xmlName: "ServiceEndpoint",
+ required: true,
+ serializedName: "ServiceEndpoint",
+ type: {
+ name: "String"
+ }
+ },
+ containerName: {
+ xmlIsAttribute: true,
+ xmlName: "ContainerName",
+ required: true,
+ serializedName: "ContainerName",
+ type: {
+ name: "String"
+ }
+ },
+ prefix: {
+ xmlName: "Prefix",
+ serializedName: "Prefix",
+ type: {
+ name: "String"
+ }
+ },
+ marker: {
+ xmlName: "Marker",
+ serializedName: "Marker",
+ type: {
+ name: "String"
+ }
+ },
+ maxResults: {
+ xmlName: "MaxResults",
+ serializedName: "MaxResults",
+ type: {
+ name: "Number"
+ }
+ },
+ delimiter: {
+ xmlName: "Delimiter",
+ serializedName: "Delimiter",
+ type: {
+ name: "String"
+ }
+ },
+ segment: {
+ xmlName: "Blobs",
+ required: true,
+ serializedName: "Segment",
+ type: {
+ name: "Composite",
+ className: "BlobHierarchyListSegment"
+ }
+ },
+ nextMarker: {
+ xmlName: "NextMarker",
+ serializedName: "NextMarker",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const FileSystemList: msRest.CompositeMapper = {
+ serializedName: "FileSystemList",
+ type: {
+ name: "Composite",
+ className: "FileSystemList",
+ modelProperties: {
+ filesystems: {
+ xmlName: "filesystems",
+ xmlElementName: "FileSystem",
+ serializedName: "filesystems",
+ type: {
+ name: "Sequence",
+ element: {
+ type: {
+ name: "Composite",
+ className: "FileSystem"
+ }
+ }
+ }
+ }
+ }
+ }
+};
+
+export const StorageErrorError: msRest.CompositeMapper = {
+ serializedName: "StorageError_error",
+ type: {
+ name: "Composite",
+ className: "StorageErrorError",
+ modelProperties: {
+ code: {
+ xmlName: "Code",
+ serializedName: "Code",
+ type: {
+ name: "String"
+ }
+ },
+ message: {
+ xmlName: "Message",
+ serializedName: "Message",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const StorageError: msRest.CompositeMapper = {
+ serializedName: "StorageError",
+ type: {
+ name: "Composite",
+ className: "StorageError",
+ modelProperties: {
+ error: {
+ xmlName: "error",
+ serializedName: "error",
+ type: {
+ name: "Composite",
+ className: "StorageErrorError"
+ }
+ }
+ }
+ }
+};
+
+export const ModifiedAccessConditions: msRest.CompositeMapper = {
+ xmlName: "modified-access-conditions",
+ type: {
+ name: "Composite",
+ className: "ModifiedAccessConditions",
+ modelProperties: {
+ ifModifiedSince: {
+ xmlName: "ifModifiedSince",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ ifUnmodifiedSince: {
+ xmlName: "ifUnmodifiedSince",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ ifMatch: {
+ xmlName: "ifMatch",
+ type: {
+ name: "String"
+ }
+ },
+ ifNoneMatch: {
+ xmlName: "ifNoneMatch",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const PathHTTPHeaders: msRest.CompositeMapper = {
+ xmlName: "path-HTTP-headers",
+ type: {
+ name: "Composite",
+ className: "PathHTTPHeaders",
+ modelProperties: {
+ cacheControl: {
+ xmlName: "cacheControl",
+ type: {
+ name: "String"
+ }
+ },
+ contentEncoding: {
+ xmlName: "contentEncoding",
+ type: {
+ name: "String"
+ }
+ },
+ contentLanguage: {
+ xmlName: "contentLanguage",
+ type: {
+ name: "String"
+ }
+ },
+ contentDisposition: {
+ xmlName: "contentDisposition",
+ type: {
+ name: "String"
+ }
+ },
+ contentType: {
+ xmlName: "contentType",
+ type: {
+ name: "String"
+ }
+ },
+ contentMD5: {
+ xmlName: "contentMD5",
+ type: {
+ name: "ByteArray"
+ }
+ },
+ transactionalContentHash: {
+ xmlName: "transactionalContentHash",
+ type: {
+ name: "ByteArray"
+ }
+ }
+ }
+ }
+};
+
+export const LeaseAccessConditions: msRest.CompositeMapper = {
+ xmlName: "lease-access-conditions",
+ type: {
+ name: "Composite",
+ className: "LeaseAccessConditions",
+ modelProperties: {
+ leaseId: {
+ xmlName: "leaseId",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const SourceModifiedAccessConditions: msRest.CompositeMapper = {
+ xmlName: "source-modified-access-conditions",
+ type: {
+ name: "Composite",
+ className: "SourceModifiedAccessConditions",
+ modelProperties: {
+ sourceIfMatch: {
+ xmlName: "sourceIfMatch",
+ type: {
+ name: "String"
+ }
+ },
+ sourceIfNoneMatch: {
+ xmlName: "sourceIfNoneMatch",
+ type: {
+ name: "String"
+ }
+ },
+ sourceIfModifiedSince: {
+ xmlName: "sourceIfModifiedSince",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ sourceIfUnmodifiedSince: {
+ xmlName: "sourceIfUnmodifiedSince",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ }
+ }
+ }
+};
+
+export const CpkInfo: msRest.CompositeMapper = {
+ xmlName: "cpk-info",
+ type: {
+ name: "Composite",
+ className: "CpkInfo",
+ modelProperties: {
+ encryptionKey: {
+ xmlName: "encryptionKey",
+ type: {
+ name: "String"
+ }
+ },
+ encryptionKeySha256: {
+ xmlName: "encryptionKeySha256",
+ type: {
+ name: "String"
+ }
+ },
+ encryptionAlgorithm: {
+ xmlName: "encryptionAlgorithm",
+ type: {
+ name: "Enum",
+ allowedValues: [
+ "AES256"
+ ]
+ }
+ }
+ }
+ }
+};
+
+export const ServiceListFileSystemsHeaders: msRest.CompositeMapper = {
+ serializedName: "service-listfilesystems-headers",
+ type: {
+ name: "Composite",
+ className: "ServiceListFileSystemsHeaders",
+ modelProperties: {
+ date: {
+ serializedName: "date",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ requestId: {
+ serializedName: "x-ms-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ version: {
+ serializedName: "x-ms-version",
+ type: {
+ name: "String"
+ }
+ },
+ continuation: {
+ serializedName: "x-ms-continuation",
+ type: {
+ name: "String"
+ }
+ },
+ contentType: {
+ serializedName: "content-type",
+ type: {
+ name: "String"
+ }
+ },
+ errorCode: {
+ serializedName: "x-ms-error-code",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const FileSystemCreateHeaders: msRest.CompositeMapper = {
+ serializedName: "filesystem-create-headers",
+ type: {
+ name: "Composite",
+ className: "FileSystemCreateHeaders",
+ modelProperties: {
+ date: {
+ serializedName: "date",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ eTag: {
+ serializedName: "etag",
+ type: {
+ name: "String"
+ }
+ },
+ lastModified: {
+ serializedName: "last-modified",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ clientRequestId: {
+ serializedName: "x-ms-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ version: {
+ serializedName: "x-ms-version",
+ type: {
+ name: "String"
+ }
+ },
+ namespaceEnabled: {
+ serializedName: "x-ms-namespace-enabled",
+ type: {
+ name: "String"
+ }
+ },
+ errorCode: {
+ serializedName: "x-ms-error-code",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const FileSystemSetPropertiesHeaders: msRest.CompositeMapper = {
+ serializedName: "filesystem-setproperties-headers",
+ type: {
+ name: "Composite",
+ className: "FileSystemSetPropertiesHeaders",
+ modelProperties: {
+ date: {
+ serializedName: "date",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ eTag: {
+ serializedName: "etag",
+ type: {
+ name: "String"
+ }
+ },
+ lastModified: {
+ serializedName: "last-modified",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ requestId: {
+ serializedName: "x-ms-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ version: {
+ serializedName: "x-ms-version",
+ type: {
+ name: "String"
+ }
+ },
+ errorCode: {
+ serializedName: "x-ms-error-code",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const FileSystemGetPropertiesHeaders: msRest.CompositeMapper = {
+ serializedName: "filesystem-getproperties-headers",
+ type: {
+ name: "Composite",
+ className: "FileSystemGetPropertiesHeaders",
+ modelProperties: {
+ date: {
+ serializedName: "date",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ eTag: {
+ serializedName: "etag",
+ type: {
+ name: "String"
+ }
+ },
+ lastModified: {
+ serializedName: "last-modified",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ requestId: {
+ serializedName: "x-ms-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ version: {
+ serializedName: "x-ms-version",
+ type: {
+ name: "String"
+ }
+ },
+ properties: {
+ serializedName: "x-ms-properties",
+ type: {
+ name: "String"
+ }
+ },
+ namespaceEnabled: {
+ serializedName: "x-ms-namespace-enabled",
+ type: {
+ name: "String"
+ }
+ },
+ errorCode: {
+ serializedName: "x-ms-error-code",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const FileSystemDeleteHeaders: msRest.CompositeMapper = {
+ serializedName: "filesystem-delete-headers",
+ type: {
+ name: "Composite",
+ className: "FileSystemDeleteHeaders",
+ modelProperties: {
+ requestId: {
+ serializedName: "x-ms-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ version: {
+ serializedName: "x-ms-version",
+ type: {
+ name: "String"
+ }
+ },
+ date: {
+ serializedName: "date",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ errorCode: {
+ serializedName: "x-ms-error-code",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const FileSystemListPathsHeaders: msRest.CompositeMapper = {
+ serializedName: "filesystem-listpaths-headers",
+ type: {
+ name: "Composite",
+ className: "FileSystemListPathsHeaders",
+ modelProperties: {
+ date: {
+ serializedName: "date",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ eTag: {
+ serializedName: "etag",
+ type: {
+ name: "String"
+ }
+ },
+ lastModified: {
+ serializedName: "last-modified",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ requestId: {
+ serializedName: "x-ms-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ version: {
+ serializedName: "x-ms-version",
+ type: {
+ name: "String"
+ }
+ },
+ continuation: {
+ serializedName: "x-ms-continuation",
+ type: {
+ name: "String"
+ }
+ },
+ errorCode: {
+ serializedName: "x-ms-error-code",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const FileSystemListBlobHierarchySegmentHeaders: msRest.CompositeMapper = {
+ serializedName: "filesystem-listblobhierarchysegment-headers",
+ type: {
+ name: "Composite",
+ className: "FileSystemListBlobHierarchySegmentHeaders",
+ modelProperties: {
+ contentType: {
+ serializedName: "content-type",
+ type: {
+ name: "String"
+ }
+ },
+ clientRequestId: {
+ serializedName: "x-ms-client-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ requestId: {
+ serializedName: "x-ms-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ version: {
+ serializedName: "x-ms-version",
+ type: {
+ name: "String"
+ }
+ },
+ date: {
+ serializedName: "date",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ errorCode: {
+ serializedName: "x-ms-error-code",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const PathCreateHeaders: msRest.CompositeMapper = {
+ serializedName: "path-create-headers",
+ type: {
+ name: "Composite",
+ className: "PathCreateHeaders",
+ modelProperties: {
+ date: {
+ serializedName: "date",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ eTag: {
+ serializedName: "etag",
+ type: {
+ name: "String"
+ }
+ },
+ lastModified: {
+ serializedName: "last-modified",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ requestId: {
+ serializedName: "x-ms-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ version: {
+ serializedName: "x-ms-version",
+ type: {
+ name: "String"
+ }
+ },
+ continuation: {
+ serializedName: "x-ms-continuation",
+ type: {
+ name: "String"
+ }
+ },
+ contentLength: {
+ serializedName: "content-length",
+ type: {
+ name: "Number"
+ }
+ },
+ isServerEncrypted: {
+ serializedName: "x-ms-request-server-encrypted",
+ type: {
+ name: "Boolean"
+ }
+ },
+ encryptionKeySha256: {
+ serializedName: "x-ms-encryption-key-sha256",
+ type: {
+ name: "String"
+ }
+ },
+ errorCode: {
+ serializedName: "x-ms-error-code",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const PathUpdateHeaders: msRest.CompositeMapper = {
+ serializedName: "path-update-headers",
+ type: {
+ name: "Composite",
+ className: "PathUpdateHeaders",
+ modelProperties: {
+ date: {
+ serializedName: "date",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ eTag: {
+ serializedName: "etag",
+ type: {
+ name: "String"
+ }
+ },
+ lastModified: {
+ serializedName: "last-modified",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ acceptRanges: {
+ serializedName: "accept-ranges",
+ type: {
+ name: "String"
+ }
+ },
+ cacheControl: {
+ serializedName: "cache-control",
+ type: {
+ name: "String"
+ }
+ },
+ contentDisposition: {
+ serializedName: "content-disposition",
+ type: {
+ name: "String"
+ }
+ },
+ contentEncoding: {
+ serializedName: "content-encoding",
+ type: {
+ name: "String"
+ }
+ },
+ contentLanguage: {
+ serializedName: "content-language",
+ type: {
+ name: "String"
+ }
+ },
+ contentLength: {
+ serializedName: "content-length",
+ type: {
+ name: "Number"
+ }
+ },
+ contentRange: {
+ serializedName: "content-range",
+ type: {
+ name: "String"
+ }
+ },
+ contentType: {
+ serializedName: "content-type",
+ type: {
+ name: "String"
+ }
+ },
+ contentMD5: {
+ serializedName: "content-md5",
+ type: {
+ name: "String"
+ }
+ },
+ properties: {
+ serializedName: "x-ms-properties",
+ type: {
+ name: "String"
+ }
+ },
+ xMsContinuation: {
+ serializedName: "x-ms-continuation",
+ type: {
+ name: "String"
+ }
+ },
+ requestId: {
+ serializedName: "x-ms-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ version: {
+ serializedName: "x-ms-version",
+ type: {
+ name: "String"
+ }
+ },
+ errorCode: {
+ serializedName: "x-ms-error-code",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const PathLeaseHeaders: msRest.CompositeMapper = {
+ serializedName: "path-lease-headers",
+ type: {
+ name: "Composite",
+ className: "PathLeaseHeaders",
+ modelProperties: {
+ date: {
+ serializedName: "date",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ eTag: {
+ serializedName: "etag",
+ type: {
+ name: "String"
+ }
+ },
+ lastModified: {
+ serializedName: "last-modified",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ requestId: {
+ serializedName: "x-ms-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ version: {
+ serializedName: "x-ms-version",
+ type: {
+ name: "String"
+ }
+ },
+ leaseId: {
+ serializedName: "x-ms-lease-id",
+ type: {
+ name: "String"
+ }
+ },
+ leaseTime: {
+ serializedName: "x-ms-lease-time",
+ type: {
+ name: "String"
+ }
+ },
+ errorCode: {
+ serializedName: "x-ms-error-code",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const PathReadHeaders: msRest.CompositeMapper = {
+ serializedName: "path-read-headers",
+ type: {
+ name: "Composite",
+ className: "PathReadHeaders",
+ modelProperties: {
+ acceptRanges: {
+ serializedName: "accept-ranges",
+ type: {
+ name: "String"
+ }
+ },
+ cacheControl: {
+ serializedName: "cache-control",
+ type: {
+ name: "String"
+ }
+ },
+ contentDisposition: {
+ serializedName: "content-disposition",
+ type: {
+ name: "String"
+ }
+ },
+ contentEncoding: {
+ serializedName: "content-encoding",
+ type: {
+ name: "String"
+ }
+ },
+ contentLanguage: {
+ serializedName: "content-language",
+ type: {
+ name: "String"
+ }
+ },
+ contentLength: {
+ serializedName: "content-length",
+ type: {
+ name: "Number"
+ }
+ },
+ contentRange: {
+ serializedName: "content-range",
+ type: {
+ name: "String"
+ }
+ },
+ contentType: {
+ serializedName: "content-type",
+ type: {
+ name: "String"
+ }
+ },
+ contentMD5: {
+ serializedName: "content-md5",
+ type: {
+ name: "String"
+ }
+ },
+ date: {
+ serializedName: "date",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ eTag: {
+ serializedName: "etag",
+ type: {
+ name: "String"
+ }
+ },
+ lastModified: {
+ serializedName: "last-modified",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ requestId: {
+ serializedName: "x-ms-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ version: {
+ serializedName: "x-ms-version",
+ type: {
+ name: "String"
+ }
+ },
+ resourceType: {
+ serializedName: "x-ms-resource-type",
+ type: {
+ name: "String"
+ }
+ },
+ properties: {
+ serializedName: "x-ms-properties",
+ type: {
+ name: "String"
+ }
+ },
+ leaseDuration: {
+ serializedName: "x-ms-lease-duration",
+ type: {
+ name: "String"
+ }
+ },
+ leaseState: {
+ serializedName: "x-ms-lease-state",
+ type: {
+ name: "String"
+ }
+ },
+ leaseStatus: {
+ serializedName: "x-ms-lease-status",
+ type: {
+ name: "String"
+ }
+ },
+ isServerEncrypted: {
+ serializedName: "x-ms-request-server-encrypted",
+ type: {
+ name: "Boolean"
+ }
+ },
+ encryptionKeySha256: {
+ serializedName: "x-ms-encryption-key-sha256",
+ type: {
+ name: "String"
+ }
+ },
+ xMsContentMd5: {
+ serializedName: "x-ms-content-md5",
+ type: {
+ name: "String"
+ }
+ },
+ errorCode: {
+ serializedName: "x-ms-error-code",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const PathGetPropertiesHeaders: msRest.CompositeMapper = {
+ serializedName: "path-getproperties-headers",
+ type: {
+ name: "Composite",
+ className: "PathGetPropertiesHeaders",
+ modelProperties: {
+ acceptRanges: {
+ serializedName: "accept-ranges",
+ type: {
+ name: "String"
+ }
+ },
+ cacheControl: {
+ serializedName: "cache-control",
+ type: {
+ name: "String"
+ }
+ },
+ contentDisposition: {
+ serializedName: "content-disposition",
+ type: {
+ name: "String"
+ }
+ },
+ contentEncoding: {
+ serializedName: "content-encoding",
+ type: {
+ name: "String"
+ }
+ },
+ contentLanguage: {
+ serializedName: "content-language",
+ type: {
+ name: "String"
+ }
+ },
+ contentLength: {
+ serializedName: "content-length",
+ type: {
+ name: "Number"
+ }
+ },
+ contentRange: {
+ serializedName: "content-range",
+ type: {
+ name: "String"
+ }
+ },
+ contentType: {
+ serializedName: "content-type",
+ type: {
+ name: "String"
+ }
+ },
+ contentMD5: {
+ serializedName: "content-md5",
+ type: {
+ name: "String"
+ }
+ },
+ date: {
+ serializedName: "date",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ eTag: {
+ serializedName: "etag",
+ type: {
+ name: "String"
+ }
+ },
+ lastModified: {
+ serializedName: "last-modified",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ requestId: {
+ serializedName: "x-ms-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ version: {
+ serializedName: "x-ms-version",
+ type: {
+ name: "String"
+ }
+ },
+ resourceType: {
+ serializedName: "x-ms-resource-type",
+ type: {
+ name: "String"
+ }
+ },
+ properties: {
+ serializedName: "x-ms-properties",
+ type: {
+ name: "String"
+ }
+ },
+ owner: {
+ serializedName: "x-ms-owner",
+ type: {
+ name: "String"
+ }
+ },
+ group: {
+ serializedName: "x-ms-group",
+ type: {
+ name: "String"
+ }
+ },
+ permissions: {
+ serializedName: "x-ms-permissions",
+ type: {
+ name: "String"
+ }
+ },
+ aCL: {
+ serializedName: "x-ms-acl",
+ type: {
+ name: "String"
+ }
+ },
+ leaseDuration: {
+ serializedName: "x-ms-lease-duration",
+ type: {
+ name: "String"
+ }
+ },
+ leaseState: {
+ serializedName: "x-ms-lease-state",
+ type: {
+ name: "String"
+ }
+ },
+ leaseStatus: {
+ serializedName: "x-ms-lease-status",
+ type: {
+ name: "String"
+ }
+ },
+ errorCode: {
+ serializedName: "x-ms-error-code",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const PathDeleteHeaders: msRest.CompositeMapper = {
+ serializedName: "path-delete-headers",
+ type: {
+ name: "Composite",
+ className: "PathDeleteHeaders",
+ modelProperties: {
+ date: {
+ serializedName: "date",
+ type: {
+ name: "String"
+ }
+ },
+ xMsRequestId: {
+ serializedName: "x-ms-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ xMsVersion: {
+ serializedName: "x-ms-version",
+ type: {
+ name: "String"
+ }
+ },
+ xMsContinuation: {
+ serializedName: "x-ms-continuation",
+ type: {
+ name: "String"
+ }
+ },
+ deletionId: {
+ serializedName: "x-ms-deletion-id",
+ type: {
+ name: "String"
+ }
+ },
+ errorCode: {
+ serializedName: "x-ms-error-code",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const PathSetAccessControlHeaders: msRest.CompositeMapper = {
+ serializedName: "path-setaccesscontrol-headers",
+ type: {
+ name: "Composite",
+ className: "PathSetAccessControlHeaders",
+ modelProperties: {
+ date: {
+ serializedName: "date",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ eTag: {
+ serializedName: "etag",
+ type: {
+ name: "String"
+ }
+ },
+ lastModified: {
+ serializedName: "last-modified",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ clientRequestId: {
+ serializedName: "x-ms-client-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ requestId: {
+ serializedName: "x-ms-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ version: {
+ serializedName: "x-ms-version",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const PathSetAccessControlRecursiveHeaders: msRest.CompositeMapper = {
+ serializedName: "path-setaccesscontrolrecursive-headers",
+ type: {
+ name: "Composite",
+ className: "PathSetAccessControlRecursiveHeaders",
+ modelProperties: {
+ date: {
+ serializedName: "date",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ clientRequestId: {
+ serializedName: "x-ms-client-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ continuation: {
+ serializedName: "x-ms-continuation",
+ type: {
+ name: "String"
+ }
+ },
+ requestId: {
+ serializedName: "x-ms-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ version: {
+ serializedName: "x-ms-version",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const PathFlushDataHeaders: msRest.CompositeMapper = {
+ serializedName: "path-flushdata-headers",
+ type: {
+ name: "Composite",
+ className: "PathFlushDataHeaders",
+ modelProperties: {
+ date: {
+ serializedName: "date",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ eTag: {
+ serializedName: "etag",
+ type: {
+ name: "String"
+ }
+ },
+ lastModified: {
+ serializedName: "last-modified",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ contentLength: {
+ serializedName: "content-length",
+ type: {
+ name: "Number"
+ }
+ },
+ clientRequestId: {
+ serializedName: "x-ms-client-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ requestId: {
+ serializedName: "x-ms-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ version: {
+ serializedName: "x-ms-version",
+ type: {
+ name: "String"
+ }
+ },
+ isServerEncrypted: {
+ serializedName: "x-ms-request-server-encrypted",
+ type: {
+ name: "Boolean"
+ }
+ },
+ encryptionKeySha256: {
+ serializedName: "x-ms-encryption-key-sha256",
+ type: {
+ name: "String"
+ }
+ },
+ leaseRenewed: {
+ serializedName: "x-ms-lease-renewed",
+ type: {
+ name: "Boolean"
+ }
+ }
+ }
+ }
+};
+
+export const PathAppendDataHeaders: msRest.CompositeMapper = {
+ serializedName: "path-appenddata-headers",
+ type: {
+ name: "Composite",
+ className: "PathAppendDataHeaders",
+ modelProperties: {
+ date: {
+ serializedName: "date",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ requestId: {
+ serializedName: "x-ms-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ clientRequestId: {
+ serializedName: "x-ms-client-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ version: {
+ serializedName: "x-ms-version",
+ type: {
+ name: "String"
+ }
+ },
+ eTag: {
+ serializedName: "etag",
+ type: {
+ name: "String"
+ }
+ },
+ contentMD5: {
+ serializedName: "content-md5",
+ type: {
+ name: "ByteArray"
+ }
+ },
+ xMsContentCrc64: {
+ serializedName: "x-ms-content-crc64",
+ type: {
+ name: "ByteArray"
+ }
+ },
+ isServerEncrypted: {
+ serializedName: "x-ms-request-server-encrypted",
+ type: {
+ name: "Boolean"
+ }
+ },
+ encryptionKeySha256: {
+ serializedName: "x-ms-encryption-key-sha256",
+ type: {
+ name: "String"
+ }
+ },
+ leaseRenewed: {
+ serializedName: "x-ms-lease-renewed",
+ type: {
+ name: "Boolean"
+ }
+ }
+ }
+ }
+};
+
+export const PathSetExpiryHeaders: msRest.CompositeMapper = {
+ serializedName: "path-setexpiry-headers",
+ type: {
+ name: "Composite",
+ className: "PathSetExpiryHeaders",
+ modelProperties: {
+ eTag: {
+ serializedName: "etag",
+ type: {
+ name: "String"
+ }
+ },
+ lastModified: {
+ serializedName: "last-modified",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ clientRequestId: {
+ serializedName: "x-ms-client-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ requestId: {
+ serializedName: "x-ms-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ version: {
+ serializedName: "x-ms-version",
+ type: {
+ name: "String"
+ }
+ },
+ date: {
+ serializedName: "date",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ errorCode: {
+ serializedName: "x-ms-error-code",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
+export const PathUndeleteHeaders: msRest.CompositeMapper = {
+ serializedName: "path-undelete-headers",
+ type: {
+ name: "Composite",
+ className: "PathUndeleteHeaders",
+ modelProperties: {
+ clientRequestId: {
+ serializedName: "x-ms-client-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ requestId: {
+ serializedName: "x-ms-request-id",
+ type: {
+ name: "String"
+ }
+ },
+ resourceType: {
+ serializedName: "x-ms-resource-type",
+ type: {
+ name: "String"
+ }
+ },
+ version: {
+ serializedName: "x-ms-version",
+ type: {
+ name: "String"
+ }
+ },
+ date: {
+ serializedName: "date",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ },
+ errorCode: {
+ serializedName: "x-ms-error-code",
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
diff --git a/src/dfs/generated/artifacts/models.ts b/src/dfs/generated/artifacts/models.ts
new file mode 100644
index 000000000..4ebe09a1a
--- /dev/null
+++ b/src/dfs/generated/artifacts/models.ts
@@ -0,0 +1,2501 @@
+/*
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+
+// tslint:disable:max-line-length
+// tslint:disable:interface-name
+// tslint:disable:quotemark
+
+/**
+ * An interface representing AclFailedEntry.
+ */
+export interface AclFailedEntry {
+ name?: string;
+ type?: string;
+ errorMessage?: string;
+}
+
+/**
+ * An interface representing SetAccessControlRecursiveResponse.
+ */
+export interface SetAccessControlRecursiveResponse {
+ directoriesSuccessful?: number;
+ filesSuccessful?: number;
+ failureCount?: number;
+ failedEntries?: AclFailedEntry[];
+}
+
+/**
+ * An interface representing Path.
+ */
+export interface Path {
+ name?: string;
+ /**
+ * Default value: false.
+ */
+ isDirectory?: boolean;
+ lastModified?: string;
+ eTag?: string;
+ contentLength?: number;
+ owner?: string;
+ group?: string;
+ permissions?: string;
+ /**
+ * The name of the encryption scope under which the blob is encrypted.
+ */
+ encryptionScope?: string;
+ creationTime?: string;
+ expiryTime?: string;
+ encryptionContext?: string;
+}
+
+/**
+ * An interface representing PathList.
+ */
+export interface PathList {
+ paths?: Path[];
+}
+
+/**
+ * An interface representing FileSystem.
+ */
+export interface FileSystem {
+ name?: string;
+ lastModified?: string;
+ eTag?: string;
+}
+
+/**
+ * An interface representing BlobPrefix.
+ */
+export interface BlobPrefix {
+ name: string;
+}
+
+/**
+ * Properties of a blob
+ */
+export interface BlobPropertiesInternal {
+ creationTime?: Date;
+ lastModified: Date;
+ etag: string;
+ /**
+ * Size in bytes
+ */
+ contentLength?: number;
+ contentType?: string;
+ contentEncoding?: string;
+ contentLanguage?: string;
+ contentMD5?: Uint8Array;
+ contentDisposition?: string;
+ cacheControl?: string;
+ blobSequenceNumber?: number;
+ copyId?: string;
+ copySource?: string;
+ copyProgress?: string;
+ copyCompletionTime?: Date;
+ copyStatusDescription?: string;
+ serverEncrypted?: boolean;
+ incrementalCopy?: boolean;
+ destinationSnapshot?: string;
+ deletedTime?: Date;
+ remainingRetentionDays?: number;
+ accessTierInferred?: boolean;
+ customerProvidedKeySha256?: string;
+ /**
+ * The name of the encryption scope under which the blob is encrypted.
+ */
+ encryptionScope?: string;
+ accessTierChangeTime?: Date;
+ tagCount?: number;
+ expiresOn?: Date;
+ isSealed?: boolean;
+ lastAccessedOn?: Date;
+ deleteTime?: Date;
+}
+
+/**
+ * An Azure Storage blob
+ */
+export interface BlobItemInternal {
+ name: string;
+ deleted: boolean;
+ snapshot: string;
+ versionId?: string;
+ isCurrentVersion?: boolean;
+ properties: BlobPropertiesInternal;
+ deletionId?: string;
+}
+
+/**
+ * An interface representing BlobHierarchyListSegment.
+ */
+export interface BlobHierarchyListSegment {
+ blobPrefixes?: BlobPrefix[];
+ blobItems: BlobItemInternal[];
+}
+
+/**
+ * An enumeration of blobs
+ */
+export interface ListBlobsHierarchySegmentResponse {
+ serviceEndpoint: string;
+ containerName: string;
+ prefix?: string;
+ marker?: string;
+ maxResults?: number;
+ delimiter?: string;
+ segment: BlobHierarchyListSegment;
+ nextMarker?: string;
+}
+
+/**
+ * An interface representing FileSystemList.
+ */
+export interface FileSystemList {
+ filesystems?: FileSystem[];
+}
+
+/**
+ * The service error response object.
+ */
+export interface StorageErrorError {
+ /**
+ * The service error code.
+ */
+ code?: string;
+ /**
+ * The service error message.
+ */
+ message?: string;
+}
+
+/**
+ * An interface representing StorageError.
+ */
+export interface StorageError {
+ /**
+ * The service error response object.
+ */
+ error?: StorageErrorError;
+}
+
+/**
+ * Additional parameters for a set of operations.
+ */
+export interface ModifiedAccessConditions {
+ /**
+ * Specify this header value to operate only on a blob if it has been modified since the
+ * specified date/time.
+ */
+ ifModifiedSince?: Date;
+ /**
+ * Specify this header value to operate only on a blob if it has not been modified since the
+ * specified date/time.
+ */
+ ifUnmodifiedSince?: Date;
+ /**
+ * Specify an ETag value to operate only on blobs with a matching value.
+ */
+ ifMatch?: string;
+ /**
+ * Specify an ETag value to operate only on blobs without a matching value.
+ */
+ ifNoneMatch?: string;
+}
+
+/**
+ * Additional parameters for a set of operations, such as: Path_create, Path_update,
+ * Path_flushData, Path_appendData.
+ */
+export interface PathHTTPHeaders {
+ /**
+ * Optional. Sets the blob's cache control. If specified, this property is stored with the blob
+ * and returned with a read request.
+ */
+ cacheControl?: string;
+ /**
+ * Optional. Sets the blob's content encoding. If specified, this property is stored with the
+ * blob and returned with a read request.
+ */
+ contentEncoding?: string;
+ /**
+ * Optional. Set the blob's content language. If specified, this property is stored with the blob
+ * and returned with a read request.
+ */
+ contentLanguage?: string;
+ /**
+ * Optional. Sets the blob's Content-Disposition header.
+ */
+ contentDisposition?: string;
+ /**
+ * Optional. Sets the blob's content type. If specified, this property is stored with the blob
+ * and returned with a read request.
+ */
+ contentType?: string;
+ /**
+ * Specify the transactional md5 for the body, to be validated by the service.
+ */
+ contentMD5?: Uint8Array;
+ /**
+ * Specify the transactional md5 for the body, to be validated by the service.
+ */
+ transactionalContentHash?: Uint8Array;
+}
+
+/**
+ * Additional parameters for a set of operations.
+ */
+export interface LeaseAccessConditions {
+ /**
+ * If specified, the operation only succeeds if the resource's lease is active and matches this
+ * ID.
+ */
+ leaseId?: string;
+}
+
+/**
+ * Additional parameters for create operation.
+ */
+export interface SourceModifiedAccessConditions {
+ /**
+ * Specify an ETag value to operate only on blobs with a matching value.
+ */
+ sourceIfMatch?: string;
+ /**
+ * Specify an ETag value to operate only on blobs without a matching value.
+ */
+ sourceIfNoneMatch?: string;
+ /**
+ * Specify this header value to operate only on a blob if it has been modified since the
+ * specified date/time.
+ */
+ sourceIfModifiedSince?: Date;
+ /**
+ * Specify this header value to operate only on a blob if it has not been modified since the
+ * specified date/time.
+ */
+ sourceIfUnmodifiedSince?: Date;
+}
+
+/**
+ * Additional parameters for a set of operations, such as: Path_create, Path_read, Path_flushData,
+ * Path_appendData.
+ */
+export interface CpkInfo {
+ /**
+ * Optional. Specifies the encryption key to use to encrypt the data provided in the request. If
+ * not specified, encryption is performed with the root account encryption key. For more
+ * information, see Encryption at Rest for Azure Storage Services.
+ */
+ encryptionKey?: string;
+ /**
+ * The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key
+ * header is provided.
+ */
+ encryptionKeySha256?: string;
+ /**
+ * The algorithm used to produce the encryption key hash. Currently, the only accepted value is
+ * "AES256". Must be provided if the x-ms-encryption-key header is provided. Possible values
+ * include: 'AES256'
+ */
+ encryptionAlgorithm?: EncryptionAlgorithmType;
+}
+
+/**
+ * An interface representing DataLakeStorageClientOptions.
+ */
+export interface DataLakeStorageClientOptions {
+ /**
+ * The lease duration is required to acquire a lease, and specifies the duration of the lease in
+ * seconds. The lease duration must be between 15 and 60 seconds or -1 for infinite lease.
+ */
+ xMsLeaseDuration?: number;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface ServiceListFileSystemsOptionalParams {
+ /**
+ * Filters results to filesystems within the specified prefix.
+ */
+ prefix?: string;
+ /**
+ * Optional. When deleting a directory, the number of paths that are deleted with each
+ * invocation is limited. If the number of paths to be deleted exceeds this limit, a
+ * continuation token is returned in this response header. When a continuation token is returned
+ * in the response, it must be specified in a subsequent invocation of the delete operation to
+ * continue deleting the directory.
+ */
+ continuation?: string;
+ /**
+ * An optional value that specifies the maximum number of items to return. If omitted or greater
+ * than 5,000, the response will include up to 5,000 items.
+ */
+ maxResults?: number;
+ /**
+ * Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the
+ * analytics logs when storage analytics logging is enabled.
+ */
+ requestId?: string;
+ /**
+ * The timeout parameter is expressed in seconds. For more information, see Setting
+ * Timeouts for Blob Service Operations.
+ */
+ timeout?: number;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface FileSystemCreateOptionalParams {
+ /**
+ * Optional. User-defined properties to be stored with the filesystem, in the format of a
+ * comma-separated list of name and value pairs "n1=v1, n2=v2, ...", where each value is a base64
+ * encoded string. Note that the string may only contain ASCII characters in the ISO-8859-1
+ * character set. If the filesystem exists, any properties not included in the list will be
+ * removed. All properties are removed if the header is omitted. To merge new and existing
+ * properties, first get all existing properties and the current E-Tag, then make a conditional
+ * request with the E-Tag and include values for all properties.
+ */
+ properties?: string;
+ /**
+ * Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the
+ * analytics logs when storage analytics logging is enabled.
+ */
+ requestId?: string;
+ /**
+ * The timeout parameter is expressed in seconds. For more information, see Setting
+ * Timeouts for Blob Service Operations.
+ */
+ timeout?: number;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface FileSystemSetPropertiesOptionalParams {
+ /**
+ * Optional. User-defined properties to be stored with the filesystem, in the format of a
+ * comma-separated list of name and value pairs "n1=v1, n2=v2, ...", where each value is a base64
+ * encoded string. Note that the string may only contain ASCII characters in the ISO-8859-1
+ * character set. If the filesystem exists, any properties not included in the list will be
+ * removed. All properties are removed if the header is omitted. To merge new and existing
+ * properties, first get all existing properties and the current E-Tag, then make a conditional
+ * request with the E-Tag and include values for all properties.
+ */
+ properties?: string;
+ /**
+ * Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the
+ * analytics logs when storage analytics logging is enabled.
+ */
+ requestId?: string;
+ /**
+ * The timeout parameter is expressed in seconds. For more information, see Setting
+ * Timeouts for Blob Service Operations.
+ */
+ timeout?: number;
+ /**
+ * Additional parameters for the operation
+ */
+ modifiedAccessConditions?: ModifiedAccessConditions;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface FileSystemGetPropertiesOptionalParams {
+ /**
+ * Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the
+ * analytics logs when storage analytics logging is enabled.
+ */
+ requestId?: string;
+ /**
+ * The timeout parameter is expressed in seconds. For more information, see Setting
+ * Timeouts for Blob Service Operations.
+ */
+ timeout?: number;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface FileSystemDeleteMethodOptionalParams {
+ /**
+ * Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the
+ * analytics logs when storage analytics logging is enabled.
+ */
+ requestId?: string;
+ /**
+ * The timeout parameter is expressed in seconds. For more information, see Setting
+ * Timeouts for Blob Service Operations.
+ */
+ timeout?: number;
+ /**
+ * Additional parameters for the operation
+ */
+ modifiedAccessConditions?: ModifiedAccessConditions;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface FileSystemListPathsOptionalParams {
+ /**
+ * Optional. When deleting a directory, the number of paths that are deleted with each
+ * invocation is limited. If the number of paths to be deleted exceeds this limit, a
+ * continuation token is returned in this response header. When a continuation token is returned
+ * in the response, it must be specified in a subsequent invocation of the delete operation to
+ * continue deleting the directory.
+ */
+ continuation?: string;
+ /**
+ * Optional. Filters results to paths within the specified directory. An error occurs if the
+ * directory does not exist.
+ */
+ path?: string;
+ /**
+ * An optional value that specifies the maximum number of items to return. If omitted or greater
+ * than 5,000, the response will include up to 5,000 items.
+ */
+ maxResults?: number;
+ /**
+ * Optional. Valid only when Hierarchical Namespace is enabled for the account. If "true", the
+ * user identity values returned in the x-ms-owner, x-ms-group, and x-ms-acl response headers
+ * will be transformed from Azure Active Directory Object IDs to User Principal Names. If
+ * "false", the values will be returned as Azure Active Directory Object IDs. The default value
+ * is false. Note that group and application Object IDs are not translated because they do not
+ * have unique friendly names.
+ */
+ upn?: boolean;
+ /**
+ * Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the
+ * analytics logs when storage analytics logging is enabled.
+ */
+ requestId?: string;
+ /**
+ * The timeout parameter is expressed in seconds. For more information, see Setting
+ * Timeouts for Blob Service Operations.
+ */
+ timeout?: number;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface FileSystemListBlobHierarchySegmentOptionalParams {
+ /**
+ * Filters results to filesystems within the specified prefix.
+ */
+ prefix?: string;
+ /**
+ * When the request includes this parameter, the operation returns a BlobPrefix element in the
+ * response body that acts as a placeholder for all blobs whose names begin with the same
+ * substring up to the appearance of the delimiter character. The delimiter may be a single
+ * character or a string.
+ */
+ delimiter?: string;
+ /**
+ * A string value that identifies the portion of the list of containers to be returned with the
+ * next listing operation. The operation returns the NextMarker value within the response body if
+ * the listing operation did not return all containers remaining to be listed with the current
+ * page. The NextMarker value can be used as the value for the marker parameter in a subsequent
+ * call to request the next page of list items. The marker value is opaque to the client.
+ */
+ marker?: string;
+ /**
+ * An optional value that specifies the maximum number of items to return. If omitted or greater
+ * than 5,000, the response will include up to 5,000 items.
+ */
+ maxResults?: number;
+ /**
+ * Include this parameter to specify one or more datasets to include in the response.
+ */
+ include?: ListBlobsIncludeItem[];
+ /**
+ * Include this parameter to specify one or more datasets to include in the response. Possible
+ * values include: 'deleted'
+ */
+ showonly?: ListBlobsShowOnly;
+ /**
+ * The timeout parameter is expressed in seconds. For more information, see Setting
+ * Timeouts for Blob Service Operations.
+ */
+ timeout?: number;
+ /**
+ * Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the
+ * analytics logs when storage analytics logging is enabled.
+ */
+ requestId?: string;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface PathCreateOptionalParams {
+ /**
+ * Required only for Create File and Create Directory. The value must be "file" or "directory".
+ * Possible values include: 'directory', 'file'
+ */
+ resource?: PathResourceType;
+ /**
+ * Optional. When deleting a directory, the number of paths that are deleted with each
+ * invocation is limited. If the number of paths to be deleted exceeds this limit, a
+ * continuation token is returned in this response header. When a continuation token is returned
+ * in the response, it must be specified in a subsequent invocation of the delete operation to
+ * continue deleting the directory.
+ */
+ continuation?: string;
+ /**
+ * Optional. Valid only when namespace is enabled. This parameter determines the behavior of the
+ * rename operation. The value must be "legacy" or "posix", and the default value will be
+ * "posix". Possible values include: 'legacy', 'posix'
+ */
+ mode?: PathRenameMode;
+ /**
+ * An optional file or directory to be renamed. The value must have the following format:
+ * "/{filesystem}/{path}". If "x-ms-properties" is specified, the properties will overwrite the
+ * existing properties; otherwise, the existing properties will be preserved. This value must be
+ * a URL percent-encoded string. Note that the string may only contain ASCII characters in the
+ * ISO-8859-1 character set.
+ */
+ renameSource?: string;
+ /**
+ * A lease ID for the source path. If specified, the source path must have an active lease and
+ * the lease ID must match.
+ */
+ sourceLeaseId?: string;
+ /**
+ * Optional. User-defined properties to be stored with the filesystem, in the format of a
+ * comma-separated list of name and value pairs "n1=v1, n2=v2, ...", where each value is a base64
+ * encoded string. Note that the string may only contain ASCII characters in the ISO-8859-1
+ * character set. If the filesystem exists, any properties not included in the list will be
+ * removed. All properties are removed if the header is omitted. To merge new and existing
+ * properties, first get all existing properties and the current E-Tag, then make a conditional
+ * request with the E-Tag and include values for all properties.
+ */
+ properties?: string;
+ /**
+ * Optional and only valid if Hierarchical Namespace is enabled for the account. Sets POSIX
+ * access permissions for the file owner, the file owning group, and others. Each class may be
+ * granted read, write, or execute permission. The sticky bit is also supported. Both symbolic
+ * (rwxrw-rw-) and 4-digit octal notation (e.g. 0766) are supported.
+ */
+ permissions?: string;
+ /**
+ * Optional and only valid if Hierarchical Namespace is enabled for the account. When creating a
+ * file or directory and the parent folder does not have a default ACL, the umask restricts the
+ * permissions of the file or directory to be created. The resulting permission is given by p
+ * bitwise and not u, where p is the permission and u is the umask. For example, if p is 0777
+ * and u is 0057, then the resulting permission is 0720. The default permission is 0777 for a
+ * directory and 0666 for a file. The default umask is 0027. The umask must be specified in
+ * 4-digit octal notation (e.g. 0766).
+ */
+ umask?: string;
+ /**
+ * Optional. The owner of the blob or directory.
+ */
+ owner?: string;
+ /**
+ * Optional. The owning group of the blob or directory.
+ */
+ group?: string;
+ /**
+ * Sets POSIX access control rights on files and directories. The value is a comma-separated list
+ * of access control entries. Each access control entry (ACE) consists of a scope, a type, a user
+ * or group identifier, and permissions in the format "[scope:][type]:[id]:[permissions]".
+ */
+ acl?: string;
+ /**
+ * Proposed lease ID, in a GUID string format. The Blob service returns 400 (Invalid request) if
+ * the proposed lease ID is not in the correct format. See Guid Constructor (String) for a list
+ * of valid GUID string formats.
+ */
+ proposedLeaseId?: string;
+ /**
+ * The lease duration is required to acquire a lease, and specifies the duration of the lease in
+ * seconds. The lease duration must be between 15 and 60 seconds or -1 for infinite lease.
+ */
+ leaseDuration?: number;
+ /**
+ * Required. Indicates mode of the expiry time. Possible values include: 'NeverExpire',
+ * 'RelativeToCreation', 'RelativeToNow', 'Absolute'
+ */
+ expiryOptions?: PathExpiryOptions;
+ /**
+ * The time to set the blob to expiry
+ */
+ expiresOn?: string;
+ /**
+ * Specifies the encryption context to set on the file.
+ */
+ encryptionContext?: string;
+ /**
+ * Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the
+ * analytics logs when storage analytics logging is enabled.
+ */
+ requestId?: string;
+ /**
+ * The timeout parameter is expressed in seconds. For more information, see Setting
+ * Timeouts for Blob Service Operations.
+ */
+ timeout?: number;
+ /**
+ * Additional parameters for the operation
+ */
+ pathHTTPHeaders?: PathHTTPHeaders;
+ /**
+ * Additional parameters for the operation
+ */
+ leaseAccessConditions?: LeaseAccessConditions;
+ /**
+ * Additional parameters for the operation
+ */
+ modifiedAccessConditions?: ModifiedAccessConditions;
+ /**
+ * Additional parameters for the operation
+ */
+ sourceModifiedAccessConditions?: SourceModifiedAccessConditions;
+ /**
+ * Additional parameters for the operation
+ */
+ cpkInfo?: CpkInfo;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface PathUpdateOptionalParams {
+ /**
+ * Optional. Valid for "SetAccessControlRecursive" operation. It specifies the maximum number of
+ * files or directories on which the acl change will be applied. If omitted or greater than
+ * 2,000, the request will process up to 2,000 items
+ */
+ maxRecords?: number;
+ /**
+ * Optional. The number of paths processed with each invocation is limited. If the number of
+ * paths to be processed exceeds this limit, a continuation token is returned in the response
+ * header x-ms-continuation. When a continuation token is returned in the response, it must be
+ * percent-encoded and specified in a subsequent invocation of setAccessControlRecursive
+ * operation.
+ */
+ continuation?: string;
+ /**
+ * Optional. Valid for "SetAccessControlRecursive" operation. If set to false, the operation will
+ * terminate quickly on encountering user errors (4XX). If true, the operation will ignore user
+ * errors and proceed with the operation on other sub-entities of the directory. Continuation
+ * token will only be returned when forceFlag is true in case of user errors. If not set the
+ * default value is false for this.
+ */
+ forceFlag?: boolean;
+ /**
+ * This parameter allows the caller to upload data in parallel and control the order in which it
+ * is appended to the file. It is required when uploading data to be appended to the file and
+ * when flushing previously uploaded data to the file. The value must be the position where the
+ * data is to be appended. Uploaded data is not immediately flushed, or written, to the file.
+ * To flush, the previously uploaded data must be contiguous, the position parameter must be
+ * specified and equal to the length of the file after all data has been written, and there must
+ * not be a request entity body included with the request.
+ */
+ position?: number;
+ /**
+ * Valid only for flush operations. If "true", uncommitted data is retained after the flush
+ * operation completes; otherwise, the uncommitted data is deleted after the flush operation.
+ * The default is false. Data at offsets less than the specified position are written to the
+ * file when flush succeeds, but this optional parameter allows data after the flush position to
+ * be retained for a future flush operation.
+ */
+ retainUncommittedData?: boolean;
+ /**
+ * Azure Storage Events allow applications to receive notifications when files change. When Azure
+ * Storage Events are enabled, a file changed event is raised. This event has a property
+ * indicating whether this is the final change to distinguish the difference between an
+ * intermediate flush to a file stream and the final close of a file stream. The close query
+ * parameter is valid only when the action is "flush" and change notifications are enabled. If
+ * the value of close is "true" and the flush operation completes successfully, the service
+ * raises a file change notification with a property indicating that this is the final update
+ * (the file stream has been closed). If "false" a change notification is raised indicating the
+ * file has changed. The default is false. This query parameter is set to true by the Hadoop ABFS
+ * driver to indicate that the file stream has been closed."
+ */
+ close?: boolean;
+ /**
+ * Required for "Append Data" and "Flush Data". Must be 0 for "Flush Data". Must be the length
+ * of the request content in bytes for "Append Data".
+ */
+ contentLength?: number;
+ /**
+ * Optional. User-defined properties to be stored with the filesystem, in the format of a
+ * comma-separated list of name and value pairs "n1=v1, n2=v2, ...", where each value is a base64
+ * encoded string. Note that the string may only contain ASCII characters in the ISO-8859-1
+ * character set. If the filesystem exists, any properties not included in the list will be
+ * removed. All properties are removed if the header is omitted. To merge new and existing
+ * properties, first get all existing properties and the current E-Tag, then make a conditional
+ * request with the E-Tag and include values for all properties.
+ */
+ properties?: string;
+ /**
+ * Optional. The owner of the blob or directory.
+ */
+ owner?: string;
+ /**
+ * Optional. The owning group of the blob or directory.
+ */
+ group?: string;
+ /**
+ * Optional and only valid if Hierarchical Namespace is enabled for the account. Sets POSIX
+ * access permissions for the file owner, the file owning group, and others. Each class may be
+ * granted read, write, or execute permission. The sticky bit is also supported. Both symbolic
+ * (rwxrw-rw-) and 4-digit octal notation (e.g. 0766) are supported.
+ */
+ permissions?: string;
+ /**
+ * Sets POSIX access control rights on files and directories. The value is a comma-separated list
+ * of access control entries. Each access control entry (ACE) consists of a scope, a type, a user
+ * or group identifier, and permissions in the format "[scope:][type]:[id]:[permissions]".
+ */
+ acl?: string;
+ /**
+ * Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the
+ * analytics logs when storage analytics logging is enabled.
+ */
+ requestId?: string;
+ /**
+ * The timeout parameter is expressed in seconds. For more information, see Setting
+ * Timeouts for Blob Service Operations.
+ */
+ timeout?: number;
+ /**
+ * Additional parameters for the operation
+ */
+ pathHTTPHeaders?: PathHTTPHeaders;
+ /**
+ * Additional parameters for the operation
+ */
+ leaseAccessConditions?: LeaseAccessConditions;
+ /**
+ * Additional parameters for the operation
+ */
+ modifiedAccessConditions?: ModifiedAccessConditions;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface PathLeaseOptionalParams {
+ /**
+ * The lease duration is required to acquire a lease, and specifies the duration of the lease in
+ * seconds. The lease duration must be between 15 and 60 seconds or -1 for infinite lease.
+ */
+ xMsLeaseDuration?: number;
+ /**
+ * The lease break period duration is optional to break a lease, and specifies the break period
+ * of the lease in seconds. The lease break duration must be between 0 and 60 seconds.
+ */
+ xMsLeaseBreakPeriod?: number;
+ /**
+ * Proposed lease ID, in a GUID string format. The Blob service returns 400 (Invalid request) if
+ * the proposed lease ID is not in the correct format. See Guid Constructor (String) for a list
+ * of valid GUID string formats.
+ */
+ proposedLeaseId?: string;
+ /**
+ * Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the
+ * analytics logs when storage analytics logging is enabled.
+ */
+ requestId?: string;
+ /**
+ * The timeout parameter is expressed in seconds. For more information, see Setting
+ * Timeouts for Blob Service Operations.
+ */
+ timeout?: number;
+ /**
+ * Additional parameters for the operation
+ */
+ leaseAccessConditions?: LeaseAccessConditions;
+ /**
+ * Additional parameters for the operation
+ */
+ modifiedAccessConditions?: ModifiedAccessConditions;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface PathReadOptionalParams {
+ /**
+ * The HTTP Range request header specifies one or more byte ranges of the resource to be
+ * retrieved.
+ */
+ range?: string;
+ /**
+ * Optional. When this header is set to "true" and specified together with the Range header, the
+ * service returns the MD5 hash for the range, as long as the range is less than or equal to 4MB
+ * in size. If this header is specified without the Range header, the service returns status code
+ * 400 (Bad Request). If this header is set to true when the range exceeds 4 MB in size, the
+ * service returns status code 400 (Bad Request).
+ */
+ xMsRangeGetContentMd5?: boolean;
+ /**
+ * Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the
+ * analytics logs when storage analytics logging is enabled.
+ */
+ requestId?: string;
+ /**
+ * The timeout parameter is expressed in seconds. For more information, see Setting
+ * Timeouts for Blob Service Operations.
+ */
+ timeout?: number;
+ /**
+ * Additional parameters for the operation
+ */
+ leaseAccessConditions?: LeaseAccessConditions;
+ /**
+ * Additional parameters for the operation
+ */
+ modifiedAccessConditions?: ModifiedAccessConditions;
+ /**
+ * Additional parameters for the operation
+ */
+ cpkInfo?: CpkInfo;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface PathGetPropertiesOptionalParams {
+ /**
+ * Optional. If the value is "getStatus" only the system defined properties for the path are
+ * returned. If the value is "getAccessControl" the access control list is returned in the
+ * response headers (Hierarchical Namespace must be enabled for the account), otherwise the
+ * properties are returned. Possible values include: 'getAccessControl', 'getStatus'
+ */
+ action?: PathGetPropertiesAction;
+ /**
+ * Optional. Valid only when Hierarchical Namespace is enabled for the account. If "true", the
+ * user identity values returned in the x-ms-owner, x-ms-group, and x-ms-acl response headers
+ * will be transformed from Azure Active Directory Object IDs to User Principal Names. If
+ * "false", the values will be returned as Azure Active Directory Object IDs. The default value
+ * is false. Note that group and application Object IDs are not translated because they do not
+ * have unique friendly names.
+ */
+ upn?: boolean;
+ /**
+ * Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the
+ * analytics logs when storage analytics logging is enabled.
+ */
+ requestId?: string;
+ /**
+ * The timeout parameter is expressed in seconds. For more information, see Setting
+ * Timeouts for Blob Service Operations.
+ */
+ timeout?: number;
+ /**
+ * Additional parameters for the operation
+ */
+ leaseAccessConditions?: LeaseAccessConditions;
+ /**
+ * Additional parameters for the operation
+ */
+ modifiedAccessConditions?: ModifiedAccessConditions;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface PathDeleteMethodOptionalParams {
+ /**
+ * Required
+ */
+ recursive?: boolean;
+ /**
+ * Optional. When deleting a directory, the number of paths that are deleted with each
+ * invocation is limited. If the number of paths to be deleted exceeds this limit, a
+ * continuation token is returned in this response header. When a continuation token is returned
+ * in the response, it must be specified in a subsequent invocation of the delete operation to
+ * continue deleting the directory.
+ */
+ continuation?: string;
+ /**
+ * If true, paginated behavior will be seen. Pagination is for the recursive ACL checks as a
+ * POSIX requirement in the server and Delete in an atomic operation once the ACL checks are
+ * completed. If false or missing, normal default behavior will kick in, which may timeout in
+ * case of very large directories due to recursive ACL checks. This new parameter is introduced
+ * for backward compatibility.
+ */
+ paginated?: boolean;
+ /**
+ * Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the
+ * analytics logs when storage analytics logging is enabled.
+ */
+ requestId?: string;
+ /**
+ * The timeout parameter is expressed in seconds. For more information, see Setting
+ * Timeouts for Blob Service Operations.
+ */
+ timeout?: number;
+ /**
+ * Additional parameters for the operation
+ */
+ leaseAccessConditions?: LeaseAccessConditions;
+ /**
+ * Additional parameters for the operation
+ */
+ modifiedAccessConditions?: ModifiedAccessConditions;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface PathSetAccessControlOptionalParams {
+ /**
+ * The timeout parameter is expressed in seconds. For more information, see Setting
+ * Timeouts for Blob Service Operations.
+ */
+ timeout?: number;
+ /**
+ * Optional. The owner of the blob or directory.
+ */
+ owner?: string;
+ /**
+ * Optional. The owning group of the blob or directory.
+ */
+ group?: string;
+ /**
+ * Optional and only valid if Hierarchical Namespace is enabled for the account. Sets POSIX
+ * access permissions for the file owner, the file owning group, and others. Each class may be
+ * granted read, write, or execute permission. The sticky bit is also supported. Both symbolic
+ * (rwxrw-rw-) and 4-digit octal notation (e.g. 0766) are supported.
+ */
+ permissions?: string;
+ /**
+ * Sets POSIX access control rights on files and directories. The value is a comma-separated list
+ * of access control entries. Each access control entry (ACE) consists of a scope, a type, a user
+ * or group identifier, and permissions in the format "[scope:][type]:[id]:[permissions]".
+ */
+ acl?: string;
+ /**
+ * Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the
+ * analytics logs when storage analytics logging is enabled.
+ */
+ requestId?: string;
+ /**
+ * Additional parameters for the operation
+ */
+ leaseAccessConditions?: LeaseAccessConditions;
+ /**
+ * Additional parameters for the operation
+ */
+ modifiedAccessConditions?: ModifiedAccessConditions;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface PathSetAccessControlRecursiveOptionalParams {
+ /**
+ * The timeout parameter is expressed in seconds. For more information, see Setting
+ * Timeouts for Blob Service Operations.
+ */
+ timeout?: number;
+ /**
+ * Optional. When deleting a directory, the number of paths that are deleted with each
+ * invocation is limited. If the number of paths to be deleted exceeds this limit, a
+ * continuation token is returned in this response header. When a continuation token is returned
+ * in the response, it must be specified in a subsequent invocation of the delete operation to
+ * continue deleting the directory.
+ */
+ continuation?: string;
+ /**
+ * Optional. Valid for "SetAccessControlRecursive" operation. If set to false, the operation will
+ * terminate quickly on encountering user errors (4XX). If true, the operation will ignore user
+ * errors and proceed with the operation on other sub-entities of the directory. Continuation
+ * token will only be returned when forceFlag is true in case of user errors. If not set the
+ * default value is false for this.
+ */
+ forceFlag?: boolean;
+ /**
+ * Optional. It specifies the maximum number of files or directories on which the acl change will
+ * be applied. If omitted or greater than 2,000, the request will process up to 2,000 items
+ */
+ maxRecords?: number;
+ /**
+ * Sets POSIX access control rights on files and directories. The value is a comma-separated list
+ * of access control entries. Each access control entry (ACE) consists of a scope, a type, a user
+ * or group identifier, and permissions in the format "[scope:][type]:[id]:[permissions]".
+ */
+ acl?: string;
+ /**
+ * Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the
+ * analytics logs when storage analytics logging is enabled.
+ */
+ requestId?: string;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface PathFlushDataOptionalParams {
+ /**
+ * The timeout parameter is expressed in seconds. For more information, see Setting
+ * Timeouts for Blob Service Operations.
+ */
+ timeout?: number;
+ /**
+ * This parameter allows the caller to upload data in parallel and control the order in which it
+ * is appended to the file. It is required when uploading data to be appended to the file and
+ * when flushing previously uploaded data to the file. The value must be the position where the
+ * data is to be appended. Uploaded data is not immediately flushed, or written, to the file.
+ * To flush, the previously uploaded data must be contiguous, the position parameter must be
+ * specified and equal to the length of the file after all data has been written, and there must
+ * not be a request entity body included with the request.
+ */
+ position?: number;
+ /**
+ * Valid only for flush operations. If "true", uncommitted data is retained after the flush
+ * operation completes; otherwise, the uncommitted data is deleted after the flush operation.
+ * The default is false. Data at offsets less than the specified position are written to the
+ * file when flush succeeds, but this optional parameter allows data after the flush position to
+ * be retained for a future flush operation.
+ */
+ retainUncommittedData?: boolean;
+ /**
+ * Azure Storage Events allow applications to receive notifications when files change. When Azure
+ * Storage Events are enabled, a file changed event is raised. This event has a property
+ * indicating whether this is the final change to distinguish the difference between an
+ * intermediate flush to a file stream and the final close of a file stream. The close query
+ * parameter is valid only when the action is "flush" and change notifications are enabled. If
+ * the value of close is "true" and the flush operation completes successfully, the service
+ * raises a file change notification with a property indicating that this is the final update
+ * (the file stream has been closed). If "false" a change notification is raised indicating the
+ * file has changed. The default is false. This query parameter is set to true by the Hadoop ABFS
+ * driver to indicate that the file stream has been closed."
+ */
+ close?: boolean;
+ /**
+ * Required for "Append Data" and "Flush Data". Must be 0 for "Flush Data". Must be the length
+ * of the request content in bytes for "Append Data".
+ */
+ contentLength?: number;
+ /**
+ * Optional. If "acquire" it will acquire the lease. If "auto-renew" it will renew the lease. If
+ * "release" it will release the lease only on flush. If "acquire-release" it will acquire &
+ * complete the operation & release the lease once operation is done. Possible values include:
+ * 'acquire', 'auto-renew', 'release', 'acquire-release'
+ */
+ leaseAction?: LeaseAction;
+ /**
+ * The lease duration is required to acquire a lease, and specifies the duration of the lease in
+ * seconds. The lease duration must be between 15 and 60 seconds or -1 for infinite lease.
+ */
+ leaseDuration?: number;
+ /**
+ * Proposed lease ID, in a GUID string format. The Blob service returns 400 (Invalid request) if
+ * the proposed lease ID is not in the correct format. See Guid Constructor (String) for a list
+ * of valid GUID string formats.
+ */
+ proposedLeaseId?: string;
+ /**
+ * Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the
+ * analytics logs when storage analytics logging is enabled.
+ */
+ requestId?: string;
+ /**
+ * Additional parameters for the operation
+ */
+ pathHTTPHeaders?: PathHTTPHeaders;
+ /**
+ * Additional parameters for the operation
+ */
+ leaseAccessConditions?: LeaseAccessConditions;
+ /**
+ * Additional parameters for the operation
+ */
+ modifiedAccessConditions?: ModifiedAccessConditions;
+ /**
+ * Additional parameters for the operation
+ */
+ cpkInfo?: CpkInfo;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface PathAppendDataOptionalParams {
+ /**
+ * This parameter allows the caller to upload data in parallel and control the order in which it
+ * is appended to the file. It is required when uploading data to be appended to the file and
+ * when flushing previously uploaded data to the file. The value must be the position where the
+ * data is to be appended. Uploaded data is not immediately flushed, or written, to the file.
+ * To flush, the previously uploaded data must be contiguous, the position parameter must be
+ * specified and equal to the length of the file after all data has been written, and there must
+ * not be a request entity body included with the request.
+ */
+ position?: number;
+ /**
+ * The timeout parameter is expressed in seconds. For more information, see Setting
+ * Timeouts for Blob Service Operations.
+ */
+ timeout?: number;
+ /**
+ * Required for "Append Data" and "Flush Data". Must be 0 for "Flush Data". Must be the length
+ * of the request content in bytes for "Append Data".
+ */
+ contentLength?: number;
+ /**
+ * Specify the transactional crc64 for the body, to be validated by the service.
+ */
+ transactionalContentCrc64?: Uint8Array;
+ /**
+ * Optional. If "acquire" it will acquire the lease. If "auto-renew" it will renew the lease. If
+ * "release" it will release the lease only on flush. If "acquire-release" it will acquire &
+ * complete the operation & release the lease once operation is done. Possible values include:
+ * 'acquire', 'auto-renew', 'release', 'acquire-release'
+ */
+ leaseAction?: LeaseAction;
+ /**
+ * The lease duration is required to acquire a lease, and specifies the duration of the lease in
+ * seconds. The lease duration must be between 15 and 60 seconds or -1 for infinite lease.
+ */
+ leaseDuration?: number;
+ /**
+ * Proposed lease ID, in a GUID string format. The Blob service returns 400 (Invalid request) if
+ * the proposed lease ID is not in the correct format. See Guid Constructor (String) for a list
+ * of valid GUID string formats.
+ */
+ proposedLeaseId?: string;
+ /**
+ * Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the
+ * analytics logs when storage analytics logging is enabled.
+ */
+ requestId?: string;
+ /**
+ * If file should be flushed after the append
+ */
+ flush?: boolean;
+ /**
+ * Additional parameters for the operation
+ */
+ pathHTTPHeaders?: PathHTTPHeaders;
+ /**
+ * Additional parameters for the operation
+ */
+ leaseAccessConditions?: LeaseAccessConditions;
+ /**
+ * Additional parameters for the operation
+ */
+ cpkInfo?: CpkInfo;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface PathSetExpiryOptionalParams {
+ /**
+ * The timeout parameter is expressed in seconds. For more information, see Setting
+ * Timeouts for Blob Service Operations.
+ */
+ timeout?: number;
+ /**
+ * Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the
+ * analytics logs when storage analytics logging is enabled.
+ */
+ requestId?: string;
+ /**
+ * The time to set the blob to expiry
+ */
+ expiresOn?: string;
+}
+
+/**
+ * Optional Parameters.
+ */
+export interface PathUndeleteOptionalParams {
+ /**
+ * The timeout parameter is expressed in seconds. For more information, see Setting
+ * Timeouts for Blob Service Operations.
+ */
+ timeout?: number;
+ /**
+ * Only for hierarchical namespace enabled accounts. Optional. The path of the soft deleted blob
+ * to undelete.
+ */
+ undeleteSource?: string;
+ /**
+ * Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the
+ * analytics logs when storage analytics logging is enabled.
+ */
+ requestId?: string;
+}
+
+/**
+ * Defines headers for ListFileSystems operation.
+ */
+export interface ServiceListFileSystemsHeaders {
+ /**
+ * A UTC date/time value generated by the service that indicates the time at which the response
+ * was initiated.
+ */
+ date?: Date;
+ /**
+ * A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.
+ */
+ requestId?: string;
+ /**
+ * The version of the REST protocol used to process the request.
+ */
+ version?: string;
+ /**
+ * If the number of filesystems to be listed exceeds the maxResults limit, a continuation token
+ * is returned in this response header. When a continuation token is returned in the response,
+ * it must be specified in a subsequent invocation of the list operation to continue listing the
+ * filesystems.
+ */
+ continuation?: string;
+ /**
+ * The content type of list filesystem response. The default content type is application/json.
+ */
+ contentType?: string;
+ errorCode?: string;
+}
+
+/**
+ * Defines headers for Create operation.
+ */
+export interface FileSystemCreateHeaders {
+ /**
+ * A UTC date/time value generated by the service that indicates the time at which the response
+ * was initiated.
+ */
+ date?: Date;
+ /**
+ * An HTTP entity tag associated with the FileSystem.
+ */
+ eTag?: string;
+ /**
+ * The data and time the filesystem was last modified. Operations on files and directories do
+ * not affect the last modified time.
+ */
+ lastModified?: Date;
+ /**
+ * A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.
+ */
+ clientRequestId?: string;
+ /**
+ * The version of the REST protocol used to process the request.
+ */
+ version?: string;
+ /**
+ * A bool string indicates whether the namespace feature is enabled. If "true", the namespace is
+ * enabled for the filesystem.
+ */
+ namespaceEnabled?: string;
+ errorCode?: string;
+}
+
+/**
+ * Defines headers for SetProperties operation.
+ */
+export interface FileSystemSetPropertiesHeaders {
+ /**
+ * A UTC date/time value generated by the service that indicates the time at which the response
+ * was initiated.
+ */
+ date?: Date;
+ /**
+ * An HTTP entity tag associated with the filesystem. Changes to filesystem properties affect
+ * the entity tag, but operations on files and directories do not.
+ */
+ eTag?: string;
+ /**
+ * The data and time the filesystem was last modified. Changes to filesystem properties update
+ * the last modified time, but operations on files and directories do not.
+ */
+ lastModified?: Date;
+ /**
+ * A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.
+ */
+ requestId?: string;
+ /**
+ * The version of the REST protocol used to process the request.
+ */
+ version?: string;
+ errorCode?: string;
+}
+
+/**
+ * Defines headers for GetProperties operation.
+ */
+export interface FileSystemGetPropertiesHeaders {
+ /**
+ * A UTC date/time value generated by the service that indicates the time at which the response
+ * was initiated.
+ */
+ date?: Date;
+ /**
+ * An HTTP entity tag associated with the filesystem. Changes to filesystem properties affect
+ * the entity tag, but operations on files and directories do not.
+ */
+ eTag?: string;
+ /**
+ * The data and time the filesystem was last modified. Changes to filesystem properties update
+ * the last modified time, but operations on files and directories do not.
+ */
+ lastModified?: Date;
+ /**
+ * A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.
+ */
+ requestId?: string;
+ /**
+ * The version of the REST protocol used to process the request.
+ */
+ version?: string;
+ /**
+ * The user-defined properties associated with the filesystem. A comma-separated list of name
+ * and value pairs in the format "n1=v1, n2=v2, ...", where each value is a base64 encoded
+ * string. Note that the string may only contain ASCII characters in the ISO-8859-1 character
+ * set.
+ */
+ properties?: string;
+ /**
+ * A bool string indicates whether the namespace feature is enabled. If "true", the namespace is
+ * enabled for the filesystem.
+ */
+ namespaceEnabled?: string;
+ errorCode?: string;
+}
+
+/**
+ * Defines headers for Delete operation.
+ */
+export interface FileSystemDeleteHeaders {
+ /**
+ * A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.
+ */
+ requestId?: string;
+ /**
+ * The version of the REST protocol used to process the request.
+ */
+ version?: string;
+ /**
+ * A UTC date/time value generated by the service that indicates the time at which the response
+ * was initiated.
+ */
+ date?: Date;
+ errorCode?: string;
+}
+
+/**
+ * Defines headers for ListPaths operation.
+ */
+export interface FileSystemListPathsHeaders {
+ /**
+ * A UTC date/time value generated by the service that indicates the time at which the response
+ * was initiated.
+ */
+ date?: Date;
+ /**
+ * An HTTP entity tag associated with the filesystem. Changes to filesystem properties affect
+ * the entity tag, but operations on files and directories do not.
+ */
+ eTag?: string;
+ /**
+ * The data and time the filesystem was last modified. Changes to filesystem properties update
+ * the last modified time, but operations on files and directories do not.
+ */
+ lastModified?: Date;
+ /**
+ * A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.
+ */
+ requestId?: string;
+ /**
+ * The version of the REST protocol used to process the request.
+ */
+ version?: string;
+ /**
+ * If the number of paths to be listed exceeds the maxResults limit, a continuation token is
+ * returned in this response header. When a continuation token is returned in the response, it
+ * must be specified in a subsequent invocation of the list operation to continue listing the
+ * paths.
+ */
+ continuation?: string;
+ errorCode?: string;
+}
+
+/**
+ * Defines headers for ListBlobHierarchySegment operation.
+ */
+export interface FileSystemListBlobHierarchySegmentHeaders {
+ /**
+ * The media type of the body of the response. For List Blobs this is 'application/xml'
+ */
+ contentType?: string;
+ /**
+ * If a client request id header is sent in the request, this header will be present in the
+ * response with the same value.
+ */
+ clientRequestId?: string;
+ /**
+ * This header uniquely identifies the request that was made and can be used for troubleshooting
+ * the request.
+ */
+ requestId?: string;
+ /**
+ * Indicates the version of the Blob service used to execute the request. This header is returned
+ * for requests made against version 2009-09-19 and above.
+ */
+ version?: string;
+ /**
+ * UTC date/time value generated by the service that indicates the time at which the response was
+ * initiated
+ */
+ date?: Date;
+ errorCode?: string;
+}
+
+/**
+ * Defines headers for Create operation.
+ */
+export interface PathCreateHeaders {
+ /**
+ * A UTC date/time value generated by the service that indicates the time at which the response
+ * was initiated.
+ */
+ date?: Date;
+ /**
+ * An HTTP entity tag associated with the file or directory.
+ */
+ eTag?: string;
+ /**
+ * The data and time the file or directory was last modified. Write operations on the file or
+ * directory update the last modified time.
+ */
+ lastModified?: Date;
+ /**
+ * A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.
+ */
+ requestId?: string;
+ /**
+ * The version of the REST protocol used to process the request.
+ */
+ version?: string;
+ /**
+ * When renaming a directory, the number of paths that are renamed with each invocation is
+ * limited. If the number of paths to be renamed exceeds this limit, a continuation token is
+ * returned in this response header. When a continuation token is returned in the response, it
+ * must be specified in a subsequent invocation of the rename operation to continue renaming the
+ * directory.
+ */
+ continuation?: string;
+ /**
+ * The size of the resource in bytes.
+ */
+ contentLength?: number;
+ /**
+ * The value of this header is set to true if the contents of the request are successfully
+ * encrypted using the specified algorithm, and false otherwise.
+ */
+ isServerEncrypted?: boolean;
+ /**
+ * The SHA-256 hash of the encryption key used to encrypt the blob. This header is only returned
+ * when the blob was encrypted with a customer-provided key.
+ */
+ encryptionKeySha256?: string;
+ errorCode?: string;
+}
+
+/**
+ * Defines headers for Update operation.
+ */
+export interface PathUpdateHeaders {
+ /**
+ * A UTC date/time value generated by the service that indicates the time at which the response
+ * was initiated.
+ */
+ date?: Date;
+ /**
+ * An HTTP entity tag associated with the file or directory.
+ */
+ eTag?: string;
+ /**
+ * The data and time the file or directory was last modified. Write operations on the file or
+ * directory update the last modified time.
+ */
+ lastModified?: Date;
+ /**
+ * Indicates that the service supports requests for partial file content.
+ */
+ acceptRanges?: string;
+ /**
+ * If the Cache-Control request header has previously been set for the resource, that value is
+ * returned in this header.
+ */
+ cacheControl?: string;
+ /**
+ * If the Content-Disposition request header has previously been set for the resource, that value
+ * is returned in this header.
+ */
+ contentDisposition?: string;
+ /**
+ * If the Content-Encoding request header has previously been set for the resource, that value is
+ * returned in this header.
+ */
+ contentEncoding?: string;
+ /**
+ * If the Content-Language request header has previously been set for the resource, that value is
+ * returned in this header.
+ */
+ contentLanguage?: string;
+ /**
+ * The size of the resource in bytes.
+ */
+ contentLength?: number;
+ /**
+ * Indicates the range of bytes returned in the event that the client requested a subset of the
+ * file by setting the Range request header.
+ */
+ contentRange?: string;
+ /**
+ * The content type specified for the resource. If no content type was specified, the default
+ * content type is application/octet-stream.
+ */
+ contentType?: string;
+ /**
+ * An MD5 hash of the request content. This header is only returned for "Append" operation. This
+ * header is returned so that the client can check for message content integrity. The value of
+ * this header is computed by the service; it is not necessarily the same value specified in the
+ * request headers.
+ */
+ contentMD5?: string;
+ /**
+ * User-defined properties associated with the file or directory, in the format of a
+ * comma-separated list of name and value pairs "n1=v1, n2=v2, ...", where each value is a base64
+ * encoded string. Note that the string may only contain ASCII characters in the ISO-8859-1
+ * character set.
+ */
+ properties?: string;
+ /**
+ * When performing setAccessControlRecursive on a directory, the number of paths that are
+ * processed with each invocation is limited. If the number of paths to be processed exceeds
+ * this limit, a continuation token is returned in this response header. When a continuation
+ * token is returned in the response, it must be specified in a subsequent invocation of the
+ * setAccessControlRecursive operation to continue the setAccessControlRecursive operation on the
+ * directory.
+ */
+ xMsContinuation?: string;
+ /**
+ * A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.
+ */
+ requestId?: string;
+ /**
+ * The version of the REST protocol used to process the request.
+ */
+ version?: string;
+ errorCode?: string;
+}
+
+/**
+ * Defines headers for Lease operation.
+ */
+export interface PathLeaseHeaders {
+ /**
+ * A UTC date/time value generated by the service that indicates the time at which the response
+ * was initiated.
+ */
+ date?: Date;
+ /**
+ * An HTTP entity tag associated with the file or directory.
+ */
+ eTag?: string;
+ /**
+ * The data and time the file or directory was last modified. Write operations on the file or
+ * directory update the last modified time.
+ */
+ lastModified?: Date;
+ /**
+ * A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.
+ */
+ requestId?: string;
+ /**
+ * The version of the REST protocol used to process the request.
+ */
+ version?: string;
+ /**
+ * A successful "acquire" action returns the lease ID.
+ */
+ leaseId?: string;
+ /**
+ * The time remaining in the lease period in seconds.
+ */
+ leaseTime?: string;
+ errorCode?: string;
+}
+
+/**
+ * Defines headers for Read operation.
+ */
+export interface PathReadHeaders {
+ /**
+ * Indicates that the service supports requests for partial file content.
+ */
+ acceptRanges?: string;
+ /**
+ * If the Cache-Control request header has previously been set for the resource, that value is
+ * returned in this header.
+ */
+ cacheControl?: string;
+ /**
+ * If the Content-Disposition request header has previously been set for the resource, that value
+ * is returned in this header.
+ */
+ contentDisposition?: string;
+ /**
+ * If the Content-Encoding request header has previously been set for the resource, that value is
+ * returned in this header.
+ */
+ contentEncoding?: string;
+ /**
+ * If the Content-Language request header has previously been set for the resource, that value is
+ * returned in this header.
+ */
+ contentLanguage?: string;
+ /**
+ * The size of the resource in bytes.
+ */
+ contentLength?: number;
+ /**
+ * Indicates the range of bytes returned in the event that the client requested a subset of the
+ * file by setting the Range request header.
+ */
+ contentRange?: string;
+ /**
+ * The content type specified for the resource. If no content type was specified, the default
+ * content type is application/octet-stream.
+ */
+ contentType?: string;
+ /**
+ * The MD5 hash of read range. If the request is to read a specified range and the
+ * "x-ms-range-get-content-md5" is set to true, then the request returns an MD5 hash for the
+ * range, as long as the range size is less than or equal to 4 MB.
+ */
+ contentMD5?: string;
+ /**
+ * A UTC date/time value generated by the service that indicates the time at which the response
+ * was initiated.
+ */
+ date?: Date;
+ /**
+ * An HTTP entity tag associated with the file or directory.
+ */
+ eTag?: string;
+ /**
+ * The data and time the file or directory was last modified. Write operations on the file or
+ * directory update the last modified time.
+ */
+ lastModified?: Date;
+ /**
+ * A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.
+ */
+ requestId?: string;
+ /**
+ * The version of the REST protocol used to process the request.
+ */
+ version?: string;
+ /**
+ * The type of the resource. The value may be "file" or "directory". If not set, the value is
+ * "file".
+ */
+ resourceType?: string;
+ /**
+ * The user-defined properties associated with the file or directory, in the format of a
+ * comma-separated list of name and value pairs "n1=v1, n2=v2, ...", where each value is a base64
+ * encoded string. Note that the string may only contain ASCII characters in the ISO-8859-1
+ * character set.
+ */
+ properties?: string;
+ /**
+ * When a resource is leased, specifies whether the lease is of infinite or fixed duration.
+ */
+ leaseDuration?: string;
+ /**
+ * Lease state of the resource.
+ */
+ leaseState?: string;
+ /**
+ * The lease status of the resource.
+ */
+ leaseStatus?: string;
+ /**
+ * The value of this header is set to true if the contents of the request are successfully
+ * encrypted using the specified algorithm, and false otherwise.
+ */
+ isServerEncrypted?: boolean;
+ /**
+ * The SHA-256 hash of the encryption key used to encrypt the blob. This header is only returned
+ * when the blob was encrypted with a customer-provided key.
+ */
+ encryptionKeySha256?: string;
+ /**
+ * The MD5 hash of complete file stored in storage. If the file has a MD5 hash, and if request
+ * contains range header (Range or x-ms-range), this response header is returned with the value
+ * of the complete file's MD5 value. This value may or may not be equal to the value returned in
+ * Content-MD5 header, with the latter calculated from the requested range.
+ */
+ xMsContentMd5?: string;
+ errorCode?: string;
+}
+
+/**
+ * Defines headers for GetProperties operation.
+ */
+export interface PathGetPropertiesHeaders {
+ /**
+ * Indicates that the service supports requests for partial file content.
+ */
+ acceptRanges?: string;
+ /**
+ * If the Cache-Control request header has previously been set for the resource, that value is
+ * returned in this header.
+ */
+ cacheControl?: string;
+ /**
+ * If the Content-Disposition request header has previously been set for the resource, that value
+ * is returned in this header.
+ */
+ contentDisposition?: string;
+ /**
+ * If the Content-Encoding request header has previously been set for the resource, that value is
+ * returned in this header.
+ */
+ contentEncoding?: string;
+ /**
+ * If the Content-Language request header has previously been set for the resource, that value is
+ * returned in this header.
+ */
+ contentLanguage?: string;
+ /**
+ * The size of the resource in bytes.
+ */
+ contentLength?: number;
+ /**
+ * Indicates the range of bytes returned in the event that the client requested a subset of the
+ * file by setting the Range request header.
+ */
+ contentRange?: string;
+ /**
+ * The content type specified for the resource. If no content type was specified, the default
+ * content type is application/octet-stream.
+ */
+ contentType?: string;
+ /**
+ * The MD5 hash of complete file stored in storage. This header is returned only for
+ * "GetProperties" operation. If the Content-MD5 header has been set for the file, this response
+ * header is returned for GetProperties call so that the client can check for message content
+ * integrity.
+ */
+ contentMD5?: string;
+ /**
+ * A UTC date/time value generated by the service that indicates the time at which the response
+ * was initiated.
+ */
+ date?: Date;
+ /**
+ * An HTTP entity tag associated with the file or directory.
+ */
+ eTag?: string;
+ /**
+ * The data and time the file or directory was last modified. Write operations on the file or
+ * directory update the last modified time.
+ */
+ lastModified?: Date;
+ /**
+ * A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.
+ */
+ requestId?: string;
+ /**
+ * The version of the REST protocol used to process the request.
+ */
+ version?: string;
+ /**
+ * The type of the resource. The value may be "file" or "directory". If not set, the value is
+ * "file".
+ */
+ resourceType?: string;
+ /**
+ * The user-defined properties associated with the file or directory, in the format of a
+ * comma-separated list of name and value pairs "n1=v1, n2=v2, ...", where each value is a base64
+ * encoded string. Note that the string may only contain ASCII characters in the ISO-8859-1
+ * character set.
+ */
+ properties?: string;
+ /**
+ * The owner of the file or directory. Included in the response if Hierarchical Namespace is
+ * enabled for the account.
+ */
+ owner?: string;
+ /**
+ * The owning group of the file or directory. Included in the response if Hierarchical Namespace
+ * is enabled for the account.
+ */
+ group?: string;
+ /**
+ * The POSIX access permissions for the file owner, the file owning group, and others. Included
+ * in the response if Hierarchical Namespace is enabled for the account.
+ */
+ permissions?: string;
+ /**
+ * The POSIX access control list for the file or directory. Included in the response only if the
+ * action is "getAccessControl" and Hierarchical Namespace is enabled for the account.
+ */
+ aCL?: string;
+ /**
+ * When a resource is leased, specifies whether the lease is of infinite or fixed duration.
+ */
+ leaseDuration?: string;
+ /**
+ * Lease state of the resource.
+ */
+ leaseState?: string;
+ /**
+ * The lease status of the resource.
+ */
+ leaseStatus?: string;
+ errorCode?: string;
+}
+
+/**
+ * Defines headers for Delete operation.
+ */
+export interface PathDeleteHeaders {
+ /**
+ * A UTC date/time value generated by the service that indicates the time at which the response
+ * was initiated.
+ */
+ date?: string;
+ /**
+ * A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.
+ */
+ xMsRequestId?: string;
+ /**
+ * The version of the REST protocol used to process the request.
+ */
+ xMsVersion?: string;
+ /**
+ * Applicable only when Hierarchical Namespace is enabled for the account. When deleting a
+ * directory, the number of paths that are deleted with each invocation is limited. If the
+ * number of paths to be deleted exceeds this limit, a continuation token is returned in this
+ * response when the following conditions are met: Delete should be on a directory with query
+ * parameters "recursive" and "paginated" set to true, the identity of the user calling the api
+ * should be a non-super user using ACL based authorization, number of paths to be deleted
+ * exceeds a limit, request version is 2023-08-03 and later. When a continuation token is
+ * returned in the response, it must be specified in a subsequent invocation of the delete
+ * operation to continue deleting the directory. Directory is successfully deleted when the
+ * continuation token returned is empty. The actual directory deletion happens only in the last
+ * invocation, the previous ones involve ACL checks in the server of the files and directories
+ * under the directory to be recursively deleted.
+ */
+ xMsContinuation?: string;
+ /**
+ * Returned only for hierarchical namespace space enabled accounts when soft delete is enabled. A
+ * unique identifier for the entity that can be used to restore it. See the Undelete REST API for
+ * more information.
+ */
+ deletionId?: string;
+ errorCode?: string;
+}
+
+/**
+ * Defines headers for SetAccessControl operation.
+ */
+export interface PathSetAccessControlHeaders {
+ /**
+ * A UTC date/time value generated by the service that indicates the time at which the response
+ * was initiated.
+ */
+ date?: Date;
+ /**
+ * An HTTP entity tag associated with the file or directory.
+ */
+ eTag?: string;
+ /**
+ * The data and time the file or directory was last modified. Write operations on the file or
+ * directory update the last modified time.
+ */
+ lastModified?: Date;
+ /**
+ * If a client request id header is sent in the request, this header will be present in the
+ * response with the same value.
+ */
+ clientRequestId?: string;
+ /**
+ * A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.
+ */
+ requestId?: string;
+ /**
+ * The version of the REST protocol used to process the request.
+ */
+ version?: string;
+}
+
+/**
+ * Defines headers for SetAccessControlRecursive operation.
+ */
+export interface PathSetAccessControlRecursiveHeaders {
+ /**
+ * A UTC date/time value generated by the service that indicates the time at which the response
+ * was initiated.
+ */
+ date?: Date;
+ /**
+ * If a client request id header is sent in the request, this header will be present in the
+ * response with the same value.
+ */
+ clientRequestId?: string;
+ /**
+ * When performing setAccessControlRecursive on a directory, the number of paths that are
+ * processed with each invocation is limited. If the number of paths to be processed exceeds
+ * this limit, a continuation token is returned in this response header. When a continuation
+ * token is returned in the response, it must be specified in a subsequent invocation of the
+ * setAccessControlRecursive operation to continue the setAccessControlRecursive operation on the
+ * directory.
+ */
+ continuation?: string;
+ /**
+ * A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.
+ */
+ requestId?: string;
+ /**
+ * The version of the REST protocol used to process the request.
+ */
+ version?: string;
+}
+
+/**
+ * Defines headers for FlushData operation.
+ */
+export interface PathFlushDataHeaders {
+ /**
+ * A UTC date/time value generated by the service that indicates the time at which the response
+ * was initiated.
+ */
+ date?: Date;
+ /**
+ * An HTTP entity tag associated with the file or directory.
+ */
+ eTag?: string;
+ /**
+ * The data and time the file or directory was last modified. Write operations on the file or
+ * directory update the last modified time.
+ */
+ lastModified?: Date;
+ /**
+ * The size of the resource in bytes.
+ */
+ contentLength?: number;
+ /**
+ * If a client request id header is sent in the request, this header will be present in the
+ * response with the same value.
+ */
+ clientRequestId?: string;
+ /**
+ * A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.
+ */
+ requestId?: string;
+ /**
+ * The version of the REST protocol used to process the request.
+ */
+ version?: string;
+ /**
+ * The value of this header is set to true if the contents of the request are successfully
+ * encrypted using the specified algorithm, and false otherwise.
+ */
+ isServerEncrypted?: boolean;
+ /**
+ * The SHA-256 hash of the encryption key used to encrypt the blob. This header is only returned
+ * when the blob was encrypted with a customer-provided key.
+ */
+ encryptionKeySha256?: string;
+ /**
+ * If the lease was auto-renewed with this request
+ */
+ leaseRenewed?: boolean;
+}
+
+/**
+ * Defines headers for AppendData operation.
+ */
+export interface PathAppendDataHeaders {
+ /**
+ * A UTC date/time value generated by the service that indicates the time at which the response
+ * was initiated.
+ */
+ date?: Date;
+ /**
+ * A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.
+ */
+ requestId?: string;
+ /**
+ * If a client request id header is sent in the request, this header will be present in the
+ * response with the same value.
+ */
+ clientRequestId?: string;
+ /**
+ * The version of the REST protocol used to process the request.
+ */
+ version?: string;
+ /**
+ * An HTTP entity tag associated with the file or directory.
+ */
+ eTag?: string;
+ /**
+ * If the blob has an MD5 hash and this operation is to read the full blob, this response header
+ * is returned so that the client can check for message content integrity.
+ */
+ contentMD5?: Uint8Array;
+ /**
+ * This header is returned so that the client can check for message content integrity. The value
+ * of this header is computed by the Blob service; it is not necessarily the same value specified
+ * in the request headers.
+ */
+ xMsContentCrc64?: Uint8Array;
+ /**
+ * The value of this header is set to true if the contents of the request are successfully
+ * encrypted using the specified algorithm, and false otherwise.
+ */
+ isServerEncrypted?: boolean;
+ /**
+ * The SHA-256 hash of the encryption key used to encrypt the blob. This header is only returned
+ * when the blob was encrypted with a customer-provided key.
+ */
+ encryptionKeySha256?: string;
+ /**
+ * If the lease was auto-renewed with this request
+ */
+ leaseRenewed?: boolean;
+}
+
+/**
+ * Defines headers for SetExpiry operation.
+ */
+export interface PathSetExpiryHeaders {
+ /**
+ * The ETag contains a value that you can use to perform operations conditionally. If the request
+ * version is 2011-08-18 or newer, the ETag value will be in quotes.
+ */
+ eTag?: string;
+ /**
+ * Returns the date and time the container was last modified. Any operation that modifies the
+ * blob, including an update of the blob's metadata or properties, changes the last-modified time
+ * of the blob.
+ */
+ lastModified?: Date;
+ /**
+ * If a client request id header is sent in the request, this header will be present in the
+ * response with the same value.
+ */
+ clientRequestId?: string;
+ /**
+ * This header uniquely identifies the request that was made and can be used for troubleshooting
+ * the request.
+ */
+ requestId?: string;
+ /**
+ * Indicates the version of the Blob service used to execute the request. This header is returned
+ * for requests made against version 2009-09-19 and above.
+ */
+ version?: string;
+ /**
+ * UTC date/time value generated by the service that indicates the time at which the response was
+ * initiated.
+ */
+ date?: Date;
+ errorCode?: string;
+}
+
+/**
+ * Defines headers for Undelete operation.
+ */
+export interface PathUndeleteHeaders {
+ /**
+ * If a client request id header is sent in the request, this header will be present in the
+ * response with the same value.
+ */
+ clientRequestId?: string;
+ /**
+ * This header uniquely identifies the request that was made and can be used for troubleshooting
+ * the request.
+ */
+ requestId?: string;
+ /**
+ * The type of the resource. The value may be "file" or "directory". If not set, the value is
+ * "file".
+ */
+ resourceType?: string;
+ /**
+ * Indicates the version of the Blob service used to execute the request. This header is returned
+ * for requests made against version 2009-09-19 and above.
+ */
+ version?: string;
+ /**
+ * UTC date/time value generated by the service that indicates the time at which the response was
+ * initiated.
+ */
+ date?: Date;
+ errorCode?: string;
+}
+
+/**
+ * Defines values for PathSetAccessControlRecursiveMode.
+ * Possible values include: 'set', 'modify', 'remove'
+ * @readonly
+ * @enum {string}
+ */
+export enum PathSetAccessControlRecursiveMode {
+ Set = 'set',
+ Modify = 'modify',
+ Remove = 'remove',
+}
+
+/**
+ * Defines values for LeaseAction.
+ * Possible values include: 'acquire', 'auto-renew', 'release', 'acquire-release'
+ * @readonly
+ * @enum {string}
+ */
+export enum LeaseAction {
+ Acquire = 'acquire',
+ AutoRenew = 'auto-renew',
+ Release = 'release',
+ AcquireRelease = 'acquire-release',
+}
+
+/**
+ * Defines values for PathExpiryOptions.
+ * Possible values include: 'NeverExpire', 'RelativeToCreation', 'RelativeToNow', 'Absolute'
+ * @readonly
+ * @enum {string}
+ */
+export enum PathExpiryOptions {
+ NeverExpire = 'NeverExpire',
+ RelativeToCreation = 'RelativeToCreation',
+ RelativeToNow = 'RelativeToNow',
+ Absolute = 'Absolute',
+}
+
+/**
+ * Defines values for ListBlobsIncludeItem.
+ * Possible values include: 'copy', 'deleted', 'metadata', 'snapshots', 'uncommittedblobs',
+ * 'versions', 'tags'
+ * @readonly
+ * @enum {string}
+ */
+export enum ListBlobsIncludeItem {
+ Copy = 'copy',
+ Deleted = 'deleted',
+ Metadata = 'metadata',
+ Snapshots = 'snapshots',
+ Uncommittedblobs = 'uncommittedblobs',
+ Versions = 'versions',
+ Tags = 'tags',
+}
+
+/**
+ * Defines values for ListBlobsShowOnly.
+ * Possible values include: 'deleted'
+ * @readonly
+ * @enum {string}
+ */
+export enum ListBlobsShowOnly {
+ Deleted = 'deleted',
+}
+
+/**
+ * Defines values for EncryptionAlgorithmType.
+ * Possible values include: 'AES256'
+ * @readonly
+ * @enum {string}
+ */
+export enum EncryptionAlgorithmType {
+ AES256 = 'AES256',
+}
+
+/**
+ * Defines values for PathResourceType.
+ * Possible values include: 'directory', 'file'
+ * @readonly
+ * @enum {string}
+ */
+export enum PathResourceType {
+ Directory = 'directory',
+ File = 'file',
+}
+
+/**
+ * Defines values for PathRenameMode.
+ * Possible values include: 'legacy', 'posix'
+ * @readonly
+ * @enum {string}
+ */
+export enum PathRenameMode {
+ Legacy = 'legacy',
+ Posix = 'posix',
+}
+
+/**
+ * Defines values for PathUpdateAction.
+ * Possible values include: 'append', 'flush', 'setProperties', 'setAccessControl',
+ * 'setAccessControlRecursive'
+ * @readonly
+ * @enum {string}
+ */
+export enum PathUpdateAction {
+ Append = 'append',
+ Flush = 'flush',
+ SetProperties = 'setProperties',
+ SetAccessControl = 'setAccessControl',
+ SetAccessControlRecursive = 'setAccessControlRecursive',
+}
+
+/**
+ * Defines values for PathLeaseAction.
+ * Possible values include: 'acquire', 'break', 'change', 'renew', 'release'
+ * @readonly
+ * @enum {string}
+ */
+export enum PathLeaseAction {
+ Acquire = 'acquire',
+ Break = 'break',
+ Change = 'change',
+ Renew = 'renew',
+ Release = 'release',
+}
+
+/**
+ * Defines values for PathGetPropertiesAction.
+ * Possible values include: 'getAccessControl', 'getStatus'
+ * @readonly
+ * @enum {string}
+ */
+export enum PathGetPropertiesAction {
+ GetAccessControl = 'getAccessControl',
+ GetStatus = 'getStatus',
+}
+
+/**
+ * Contains response data for the listFileSystems operation.
+ */
+export type ServiceListFileSystemsResponse = FileSystemList & ServiceListFileSystemsHeaders & {
+ /**
+ * The response status code.
+ */
+ statusCode: 200;
+};
+
+/**
+ * Contains response data for the create operation.
+ */
+export type FileSystemCreateResponse = FileSystemCreateHeaders & {
+ /**
+ * The response status code.
+ */
+ statusCode: 201;
+};
+
+/**
+ * Contains response data for the setProperties operation.
+ */
+export type FileSystemSetPropertiesResponse = FileSystemSetPropertiesHeaders & {
+ /**
+ * The response status code.
+ */
+ statusCode: 200;
+};
+
+/**
+ * Contains response data for the getProperties operation.
+ */
+export type FileSystemGetPropertiesResponse = FileSystemGetPropertiesHeaders & {
+ /**
+ * The response status code.
+ */
+ statusCode: 200;
+};
+
+/**
+ * Contains response data for the deleteMethod operation.
+ */
+export type FileSystemDeleteResponse = FileSystemDeleteHeaders & {
+ /**
+ * The response status code.
+ */
+ statusCode: 202;
+};
+
+/**
+ * Contains response data for the listPaths operation.
+ */
+export type FileSystemListPathsResponse = PathList & FileSystemListPathsHeaders & {
+ /**
+ * The response status code.
+ */
+ statusCode: 200;
+};
+
+/**
+ * Contains response data for the listBlobHierarchySegment operation.
+ */
+export type FileSystemListBlobHierarchySegmentResponse = ListBlobsHierarchySegmentResponse & FileSystemListBlobHierarchySegmentHeaders & {
+ /**
+ * The response status code.
+ */
+ statusCode: 200;
+};
+
+/**
+ * Contains response data for the create operation.
+ */
+export type PathCreateResponse = PathCreateHeaders & {
+ /**
+ * The response status code.
+ */
+ statusCode: 201;
+};
+
+/**
+ * Contains response data for the update operation.
+ */
+export type PathUpdateResponse = SetAccessControlRecursiveResponse & PathUpdateHeaders & {
+ /**
+ * The response status code.
+ */
+ statusCode: 200 | 202;
+};
+
+/**
+ * Contains response data for the lease operation.
+ */
+export type PathLeaseResponse = PathLeaseHeaders & {
+ /**
+ * The response status code.
+ */
+ statusCode: 200 | 201 | 202;
+};
+
+/**
+ * Contains response data for the read operation.
+ */
+export type PathReadResponse = PathReadHeaders & {
+ /**
+ * The response body as a node.js Readable stream.
+ */
+ body?: NodeJS.ReadableStream;
+} & {
+ /**
+ * The response status code.
+ */
+ statusCode: 200 | 206;
+};
+
+/**
+ * Contains response data for the getProperties operation.
+ */
+export type PathGetPropertiesResponse = PathGetPropertiesHeaders & {
+ /**
+ * The response status code.
+ */
+ statusCode: 200;
+};
+
+/**
+ * Contains response data for the deleteMethod operation.
+ */
+export type PathDeleteResponse = PathDeleteHeaders & {
+ /**
+ * The response status code.
+ */
+ statusCode: 200 | 202;
+};
+
+/**
+ * Contains response data for the setAccessControl operation.
+ */
+export type PathSetAccessControlResponse = PathSetAccessControlHeaders & {
+ /**
+ * The response status code.
+ */
+ statusCode: 200;
+};
+
+/**
+ * Contains response data for the setAccessControlRecursive operation.
+ */
+export type PathSetAccessControlRecursiveResponse = SetAccessControlRecursiveResponse & PathSetAccessControlRecursiveHeaders & {
+ /**
+ * The response status code.
+ */
+ statusCode: 200;
+};
+
+/**
+ * Contains response data for the flushData operation.
+ */
+export type PathFlushDataResponse = PathFlushDataHeaders & {
+ /**
+ * The response status code.
+ */
+ statusCode: 200;
+};
+
+/**
+ * Contains response data for the appendData operation.
+ */
+export type PathAppendDataResponse = PathAppendDataHeaders & {
+ /**
+ * The response status code.
+ */
+ statusCode: 202;
+};
+
+/**
+ * Contains response data for the setExpiry operation.
+ */
+export type PathSetExpiryResponse = PathSetExpiryHeaders & {
+ /**
+ * The response status code.
+ */
+ statusCode: 200;
+};
+
+/**
+ * Contains response data for the undelete operation.
+ */
+export type PathUndeleteResponse = PathUndeleteHeaders & {
+ /**
+ * The response status code.
+ */
+ statusCode: 200;
+};
diff --git a/src/dfs/generated/artifacts/operation.ts b/src/dfs/generated/artifacts/operation.ts
new file mode 100644
index 000000000..2b346a4b0
--- /dev/null
+++ b/src/dfs/generated/artifacts/operation.ts
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
+ */
+
+export enum Operation {
+ Service_ListFileSystems,
+ FileSystem_Create,
+ FileSystem_SetProperties,
+ FileSystem_GetProperties,
+ FileSystem_Delete,
+ FileSystem_ListPaths,
+ FileSystem_ListBlobHierarchySegment,
+ Path_Create,
+ Path_Update,
+ Path_Lease,
+ Path_Read,
+ Path_GetProperties,
+ Path_Delete,
+ Path_SetAccessControl,
+ Path_SetAccessControlRecursive,
+ Path_FlushData,
+ Path_AppendData,
+ Path_SetExpiry,
+ Path_Undelete,
+}
+export default Operation;
diff --git a/src/dfs/generated/artifacts/parameters.ts b/src/dfs/generated/artifacts/parameters.ts
new file mode 100644
index 000000000..186940e9d
--- /dev/null
+++ b/src/dfs/generated/artifacts/parameters.ts
@@ -0,0 +1,1067 @@
+/*
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is
+ * regenerated.
+ */
+
+// tslint:disable:quotemark
+// tslint:disable:object-literal-sort-keys
+
+import * as msRest from "@azure/ms-rest-js";
+
+export const acl: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "acl"
+ ],
+ mapper: {
+ serializedName: "x-ms-acl",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const action0: msRest.OperationQueryParameter = {
+ parameterPath: "action",
+ mapper: {
+ required: true,
+ serializedName: "action",
+ type: {
+ name: "Enum",
+ allowedValues: [
+ "append",
+ "flush",
+ "setProperties",
+ "setAccessControl",
+ "setAccessControlRecursive"
+ ]
+ }
+ }
+};
+export const action1: msRest.OperationQueryParameter = {
+ parameterPath: [
+ "options",
+ "action"
+ ],
+ mapper: {
+ serializedName: "action",
+ type: {
+ name: "Enum",
+ allowedValues: [
+ "getAccessControl",
+ "getStatus"
+ ]
+ }
+ }
+};
+export const action2: msRest.OperationQueryParameter = {
+ parameterPath: "action",
+ mapper: {
+ required: true,
+ isConstant: true,
+ serializedName: "action",
+ defaultValue: 'setAccessControl',
+ type: {
+ name: "String"
+ }
+ }
+};
+export const action3: msRest.OperationQueryParameter = {
+ parameterPath: "action",
+ mapper: {
+ required: true,
+ isConstant: true,
+ serializedName: "action",
+ defaultValue: 'setAccessControlRecursive',
+ type: {
+ name: "String"
+ }
+ }
+};
+export const action4: msRest.OperationQueryParameter = {
+ parameterPath: "action",
+ mapper: {
+ required: true,
+ isConstant: true,
+ serializedName: "action",
+ defaultValue: 'flush',
+ type: {
+ name: "String"
+ }
+ }
+};
+export const action5: msRest.OperationQueryParameter = {
+ parameterPath: "action",
+ mapper: {
+ required: true,
+ isConstant: true,
+ serializedName: "action",
+ defaultValue: 'append',
+ type: {
+ name: "String"
+ }
+ }
+};
+export const cacheControl: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "pathHTTPHeaders",
+ "cacheControl"
+ ],
+ mapper: {
+ serializedName: "x-ms-cache-control",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const close: msRest.OperationQueryParameter = {
+ parameterPath: [
+ "options",
+ "close"
+ ],
+ mapper: {
+ serializedName: "close",
+ type: {
+ name: "Boolean"
+ }
+ }
+};
+export const comp0: msRest.OperationQueryParameter = {
+ parameterPath: "comp",
+ mapper: {
+ required: true,
+ isConstant: true,
+ serializedName: "comp",
+ defaultValue: 'list',
+ type: {
+ name: "String"
+ }
+ }
+};
+export const comp1: msRest.OperationQueryParameter = {
+ parameterPath: "comp",
+ mapper: {
+ required: true,
+ isConstant: true,
+ serializedName: "comp",
+ defaultValue: 'expiry',
+ type: {
+ name: "String"
+ }
+ }
+};
+export const comp2: msRest.OperationQueryParameter = {
+ parameterPath: "comp",
+ mapper: {
+ required: true,
+ isConstant: true,
+ serializedName: "comp",
+ defaultValue: 'undelete',
+ type: {
+ name: "String"
+ }
+ }
+};
+export const contentDisposition: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "pathHTTPHeaders",
+ "contentDisposition"
+ ],
+ mapper: {
+ serializedName: "x-ms-content-disposition",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const contentEncoding: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "pathHTTPHeaders",
+ "contentEncoding"
+ ],
+ mapper: {
+ serializedName: "x-ms-content-encoding",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const contentLanguage: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "pathHTTPHeaders",
+ "contentLanguage"
+ ],
+ mapper: {
+ serializedName: "x-ms-content-language",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const contentLength: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "contentLength"
+ ],
+ mapper: {
+ serializedName: "Content-Length",
+ constraints: {
+ InclusiveMinimum: 0
+ },
+ type: {
+ name: "Number"
+ }
+ }
+};
+export const contentMD5: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "pathHTTPHeaders",
+ "contentMD5"
+ ],
+ mapper: {
+ serializedName: "x-ms-content-md5",
+ type: {
+ name: "ByteArray"
+ }
+ }
+};
+export const contentType: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "pathHTTPHeaders",
+ "contentType"
+ ],
+ mapper: {
+ serializedName: "x-ms-content-type",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const continuation: msRest.OperationQueryParameter = {
+ parameterPath: [
+ "options",
+ "continuation"
+ ],
+ mapper: {
+ serializedName: "continuation",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const delimiter: msRest.OperationQueryParameter = {
+ parameterPath: [
+ "options",
+ "delimiter"
+ ],
+ mapper: {
+ serializedName: "delimiter",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const encryptionAlgorithm: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "cpkInfo",
+ "encryptionAlgorithm"
+ ],
+ mapper: {
+ serializedName: "x-ms-encryption-algorithm",
+ type: {
+ name: "Enum",
+ allowedValues: [
+ "AES256"
+ ]
+ }
+ }
+};
+export const encryptionContext: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "encryptionContext"
+ ],
+ mapper: {
+ serializedName: "x-ms-encryption-context",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const encryptionKey: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "cpkInfo",
+ "encryptionKey"
+ ],
+ mapper: {
+ serializedName: "x-ms-encryption-key",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const encryptionKeySha256: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "cpkInfo",
+ "encryptionKeySha256"
+ ],
+ mapper: {
+ serializedName: "x-ms-encryption-key-sha256",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const expiresOn: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "expiresOn"
+ ],
+ mapper: {
+ serializedName: "x-ms-expiry-time",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const expiryOptions0: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "expiryOptions"
+ ],
+ mapper: {
+ serializedName: "x-ms-expiry-option",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const expiryOptions1: msRest.OperationParameter = {
+ parameterPath: "expiryOptions",
+ mapper: {
+ required: true,
+ serializedName: "x-ms-expiry-option",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const fileSystem: msRest.OperationURLParameter = {
+ parameterPath: "fileSystem",
+ mapper: {
+ required: true,
+ serializedName: "filesystem",
+ constraints: {
+ MaxLength: 63,
+ MinLength: 3,
+ Pattern: /^[$a-z0-9](?!.*--)[-a-z0-9]{1,61}[a-z0-9]$/
+ },
+ type: {
+ name: "String"
+ }
+ }
+};
+export const flush: msRest.OperationQueryParameter = {
+ parameterPath: [
+ "options",
+ "flush"
+ ],
+ mapper: {
+ serializedName: "flush",
+ type: {
+ name: "Boolean"
+ }
+ }
+};
+export const forceFlag: msRest.OperationQueryParameter = {
+ parameterPath: [
+ "options",
+ "forceFlag"
+ ],
+ mapper: {
+ serializedName: "forceFlag",
+ type: {
+ name: "Boolean"
+ }
+ }
+};
+export const group: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "group"
+ ],
+ mapper: {
+ serializedName: "x-ms-group",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const ifMatch: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "modifiedAccessConditions",
+ "ifMatch"
+ ],
+ mapper: {
+ serializedName: "If-Match",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const ifModifiedSince: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "modifiedAccessConditions",
+ "ifModifiedSince"
+ ],
+ mapper: {
+ serializedName: "If-Modified-Since",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ }
+};
+export const ifNoneMatch: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "modifiedAccessConditions",
+ "ifNoneMatch"
+ ],
+ mapper: {
+ serializedName: "If-None-Match",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const ifUnmodifiedSince: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "modifiedAccessConditions",
+ "ifUnmodifiedSince"
+ ],
+ mapper: {
+ serializedName: "If-Unmodified-Since",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ }
+};
+export const include: msRest.OperationQueryParameter = {
+ parameterPath: [
+ "options",
+ "include"
+ ],
+ mapper: {
+ serializedName: "include",
+ type: {
+ name: "Sequence",
+ element: {
+ type: {
+ name: "Enum",
+ allowedValues: [
+ "copy",
+ "deleted",
+ "metadata",
+ "snapshots",
+ "uncommittedblobs",
+ "versions",
+ "tags"
+ ]
+ }
+ }
+ }
+ },
+ collectionFormat: msRest.QueryCollectionFormat.Csv
+};
+export const leaseAction: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "leaseAction"
+ ],
+ mapper: {
+ serializedName: "x-ms-lease-action",
+ type: {
+ name: "Enum",
+ allowedValues: [
+ "acquire",
+ "auto-renew",
+ "release",
+ "acquire-release"
+ ]
+ }
+ }
+};
+export const leaseDuration: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "leaseDuration"
+ ],
+ mapper: {
+ serializedName: "x-ms-lease-duration",
+ type: {
+ name: "Number"
+ }
+ }
+};
+export const leaseId: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "leaseAccessConditions",
+ "leaseId"
+ ],
+ mapper: {
+ serializedName: "x-ms-lease-id",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const marker: msRest.OperationQueryParameter = {
+ parameterPath: [
+ "options",
+ "marker"
+ ],
+ mapper: {
+ serializedName: "marker",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const maxRecords: msRest.OperationQueryParameter = {
+ parameterPath: [
+ "options",
+ "maxRecords"
+ ],
+ mapper: {
+ serializedName: "maxRecords",
+ constraints: {
+ InclusiveMinimum: 1
+ },
+ type: {
+ name: "Number"
+ }
+ }
+};
+export const maxResults: msRest.OperationQueryParameter = {
+ parameterPath: [
+ "options",
+ "maxResults"
+ ],
+ mapper: {
+ serializedName: "maxResults",
+ constraints: {
+ InclusiveMinimum: 1
+ },
+ type: {
+ name: "Number"
+ }
+ }
+};
+export const mode0: msRest.OperationQueryParameter = {
+ parameterPath: [
+ "options",
+ "mode"
+ ],
+ mapper: {
+ serializedName: "mode",
+ type: {
+ name: "Enum",
+ allowedValues: [
+ "legacy",
+ "posix"
+ ]
+ }
+ }
+};
+export const mode1: msRest.OperationQueryParameter = {
+ parameterPath: "mode",
+ mapper: {
+ required: true,
+ serializedName: "mode",
+ type: {
+ name: "Enum",
+ allowedValues: [
+ "set",
+ "modify",
+ "remove"
+ ]
+ }
+ }
+};
+export const owner: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "owner"
+ ],
+ mapper: {
+ serializedName: "x-ms-owner",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const paginated: msRest.OperationQueryParameter = {
+ parameterPath: [
+ "options",
+ "paginated"
+ ],
+ mapper: {
+ serializedName: "paginated",
+ type: {
+ name: "Boolean"
+ }
+ }
+};
+export const path0: msRest.OperationQueryParameter = {
+ parameterPath: [
+ "options",
+ "path"
+ ],
+ mapper: {
+ serializedName: "directory",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const path1: msRest.OperationURLParameter = {
+ parameterPath: "path",
+ mapper: {
+ required: true,
+ serializedName: "path",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const permissions: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "permissions"
+ ],
+ mapper: {
+ serializedName: "x-ms-permissions",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const position: msRest.OperationQueryParameter = {
+ parameterPath: [
+ "options",
+ "position"
+ ],
+ mapper: {
+ serializedName: "position",
+ type: {
+ name: "Number"
+ }
+ }
+};
+export const prefix: msRest.OperationQueryParameter = {
+ parameterPath: [
+ "options",
+ "prefix"
+ ],
+ mapper: {
+ serializedName: "prefix",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const properties: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "properties"
+ ],
+ mapper: {
+ serializedName: "x-ms-properties",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const proposedLeaseId: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "proposedLeaseId"
+ ],
+ mapper: {
+ serializedName: "x-ms-proposed-lease-id",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const range: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "range"
+ ],
+ mapper: {
+ serializedName: "Range",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const recursive0: msRest.OperationQueryParameter = {
+ parameterPath: "recursive",
+ mapper: {
+ required: true,
+ serializedName: "recursive",
+ type: {
+ name: "Boolean"
+ }
+ }
+};
+export const recursive1: msRest.OperationQueryParameter = {
+ parameterPath: [
+ "options",
+ "recursive"
+ ],
+ mapper: {
+ serializedName: "recursive",
+ type: {
+ name: "Boolean"
+ }
+ }
+};
+export const renameSource: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "renameSource"
+ ],
+ mapper: {
+ serializedName: "x-ms-rename-source",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const requestId: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "requestId"
+ ],
+ mapper: {
+ serializedName: "x-ms-client-request-id",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const resource0: msRest.OperationQueryParameter = {
+ parameterPath: "resource",
+ mapper: {
+ required: true,
+ isConstant: true,
+ serializedName: "resource",
+ defaultValue: 'account',
+ type: {
+ name: "String"
+ }
+ }
+};
+export const resource1: msRest.OperationQueryParameter = {
+ parameterPath: "resource",
+ mapper: {
+ required: true,
+ isConstant: true,
+ serializedName: "resource",
+ defaultValue: 'filesystem',
+ type: {
+ name: "String"
+ }
+ }
+};
+export const resource2: msRest.OperationQueryParameter = {
+ parameterPath: [
+ "options",
+ "resource"
+ ],
+ mapper: {
+ serializedName: "resource",
+ type: {
+ name: "Enum",
+ allowedValues: [
+ "directory",
+ "file"
+ ]
+ }
+ }
+};
+export const restype: msRest.OperationQueryParameter = {
+ parameterPath: "restype",
+ mapper: {
+ required: true,
+ isConstant: true,
+ serializedName: "restype",
+ defaultValue: 'container',
+ type: {
+ name: "String"
+ }
+ }
+};
+export const retainUncommittedData: msRest.OperationQueryParameter = {
+ parameterPath: [
+ "options",
+ "retainUncommittedData"
+ ],
+ mapper: {
+ serializedName: "retainUncommittedData",
+ type: {
+ name: "Boolean"
+ }
+ }
+};
+export const showonly: msRest.OperationQueryParameter = {
+ parameterPath: [
+ "options",
+ "showonly"
+ ],
+ mapper: {
+ serializedName: "showonly",
+ type: {
+ name: "Enum",
+ allowedValues: [
+ "deleted"
+ ]
+ }
+ }
+};
+export const sourceIfMatch: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "sourceModifiedAccessConditions",
+ "sourceIfMatch"
+ ],
+ mapper: {
+ serializedName: "x-ms-source-if-match",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const sourceIfModifiedSince: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "sourceModifiedAccessConditions",
+ "sourceIfModifiedSince"
+ ],
+ mapper: {
+ serializedName: "x-ms-source-if-modified-since",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ }
+};
+export const sourceIfNoneMatch: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "sourceModifiedAccessConditions",
+ "sourceIfNoneMatch"
+ ],
+ mapper: {
+ serializedName: "x-ms-source-if-none-match",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const sourceIfUnmodifiedSince: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "sourceModifiedAccessConditions",
+ "sourceIfUnmodifiedSince"
+ ],
+ mapper: {
+ serializedName: "x-ms-source-if-unmodified-since",
+ type: {
+ name: "DateTimeRfc1123"
+ }
+ }
+};
+export const sourceLeaseId: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "sourceLeaseId"
+ ],
+ mapper: {
+ serializedName: "x-ms-source-lease-id",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const timeout: msRest.OperationQueryParameter = {
+ parameterPath: [
+ "options",
+ "timeout"
+ ],
+ mapper: {
+ serializedName: "timeout",
+ constraints: {
+ InclusiveMinimum: 0
+ },
+ type: {
+ name: "Number"
+ }
+ }
+};
+export const transactionalContentCrc64: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "transactionalContentCrc64"
+ ],
+ mapper: {
+ serializedName: "x-ms-content-crc64",
+ type: {
+ name: "ByteArray"
+ }
+ }
+};
+export const transactionalContentHash: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "pathHTTPHeaders",
+ "transactionalContentHash"
+ ],
+ mapper: {
+ serializedName: "Content-MD5",
+ type: {
+ name: "ByteArray"
+ }
+ }
+};
+export const umask: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "umask"
+ ],
+ mapper: {
+ serializedName: "x-ms-umask",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const undeleteSource: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "undeleteSource"
+ ],
+ mapper: {
+ serializedName: "x-ms-undelete-source",
+ type: {
+ name: "String"
+ }
+ }
+};
+export const upn: msRest.OperationQueryParameter = {
+ parameterPath: [
+ "options",
+ "upn"
+ ],
+ mapper: {
+ serializedName: "upn",
+ type: {
+ name: "Boolean"
+ }
+ }
+};
+export const url: msRest.OperationURLParameter = {
+ parameterPath: "url",
+ mapper: {
+ required: true,
+ serializedName: "url",
+ defaultValue: '',
+ type: {
+ name: "String"
+ }
+ },
+ skipEncoding: true
+};
+export const version: msRest.OperationParameter = {
+ parameterPath: "version",
+ mapper: {
+ required: true,
+ isConstant: true,
+ serializedName: "x-ms-version",
+ defaultValue: '2023-05-03',
+ type: {
+ name: "String"
+ }
+ }
+};
+export const xMsLeaseAction: msRest.OperationParameter = {
+ parameterPath: "xMsLeaseAction",
+ mapper: {
+ required: true,
+ serializedName: "x-ms-lease-action",
+ type: {
+ name: "Enum",
+ allowedValues: [
+ "acquire",
+ "break",
+ "change",
+ "renew",
+ "release"
+ ]
+ }
+ }
+};
+export const xMsLeaseBreakPeriod: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "xMsLeaseBreakPeriod"
+ ],
+ mapper: {
+ serializedName: "x-ms-lease-break-period",
+ type: {
+ name: "Number"
+ }
+ }
+};
+export const xMsLeaseDuration: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "xMsLeaseDuration"
+ ],
+ mapper: {
+ serializedName: "x-ms-lease-duration",
+ type: {
+ name: "Number"
+ }
+ }
+};
+export const xMsRangeGetContentMd5: msRest.OperationParameter = {
+ parameterPath: [
+ "options",
+ "xMsRangeGetContentMd5"
+ ],
+ mapper: {
+ serializedName: "x-ms-range-get-content-md5",
+ type: {
+ name: "Boolean"
+ }
+ }
+};
diff --git a/src/dfs/generated/artifacts/specifications.ts b/src/dfs/generated/artifacts/specifications.ts
new file mode 100644
index 000000000..fbf1fefba
--- /dev/null
+++ b/src/dfs/generated/artifacts/specifications.ts
@@ -0,0 +1,775 @@
+/*
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is
+ * regenerated.
+ */
+// tslint:disable:object-literal-sort-keys
+
+import * as msRest from "@azure/ms-rest-js";
+
+import * as Mappers from "./mappers";
+import { Operation } from "./operation";
+import * as Parameters from "./parameters";
+
+const serializer = new msRest.Serializer(Mappers, true);
+// specifications for new method group start
+const serviceListFileSystemsOperationSpec: msRest.OperationSpec = {
+ httpMethod: "GET",
+ urlParameters: [
+ Parameters.url
+ ],
+ queryParameters: [
+ Parameters.resource0,
+ Parameters.prefix,
+ Parameters.continuation,
+ Parameters.maxResults,
+ Parameters.timeout
+ ],
+ headerParameters: [
+ Parameters.requestId,
+ Parameters.version
+ ],
+ responses: {
+ 200: {
+ bodyMapper: Mappers.FileSystemList,
+ headersMapper: Mappers.ServiceListFileSystemsHeaders
+ },
+ default: {
+ bodyMapper: Mappers.StorageError
+ }
+ },
+ isXML: true,
+ serializer
+};
+
+// specifications for new method group start
+const fileSystemCreateOperationSpec: msRest.OperationSpec = {
+ httpMethod: "PUT",
+ path: "{filesystem}",
+ urlParameters: [
+ Parameters.url,
+ Parameters.fileSystem
+ ],
+ queryParameters: [
+ Parameters.resource1,
+ Parameters.timeout
+ ],
+ headerParameters: [
+ Parameters.properties,
+ Parameters.requestId,
+ Parameters.version
+ ],
+ responses: {
+ 201: {
+ headersMapper: Mappers.FileSystemCreateHeaders
+ },
+ default: {
+ bodyMapper: Mappers.StorageError
+ }
+ },
+ isXML: true,
+ serializer
+};
+
+const fileSystemSetPropertiesOperationSpec: msRest.OperationSpec = {
+ httpMethod: "PATCH",
+ path: "{filesystem}",
+ urlParameters: [
+ Parameters.url,
+ Parameters.fileSystem
+ ],
+ queryParameters: [
+ Parameters.resource1,
+ Parameters.timeout
+ ],
+ headerParameters: [
+ Parameters.properties,
+ Parameters.requestId,
+ Parameters.version,
+ Parameters.ifModifiedSince,
+ Parameters.ifUnmodifiedSince
+ ],
+ responses: {
+ 200: {
+ headersMapper: Mappers.FileSystemSetPropertiesHeaders
+ },
+ default: {
+ bodyMapper: Mappers.StorageError
+ }
+ },
+ isXML: true,
+ serializer
+};
+
+const fileSystemGetPropertiesOperationSpec: msRest.OperationSpec = {
+ httpMethod: "HEAD",
+ path: "{filesystem}",
+ urlParameters: [
+ Parameters.url,
+ Parameters.fileSystem
+ ],
+ queryParameters: [
+ Parameters.resource1,
+ Parameters.timeout
+ ],
+ headerParameters: [
+ Parameters.requestId,
+ Parameters.version
+ ],
+ responses: {
+ 200: {
+ headersMapper: Mappers.FileSystemGetPropertiesHeaders
+ },
+ default: {
+ bodyMapper: Mappers.StorageError
+ }
+ },
+ isXML: true,
+ serializer
+};
+
+const fileSystemDeleteOperationSpec: msRest.OperationSpec = {
+ httpMethod: "DELETE",
+ path: "{filesystem}",
+ urlParameters: [
+ Parameters.url,
+ Parameters.fileSystem
+ ],
+ queryParameters: [
+ Parameters.resource1,
+ Parameters.timeout
+ ],
+ headerParameters: [
+ Parameters.requestId,
+ Parameters.version,
+ Parameters.ifModifiedSince,
+ Parameters.ifUnmodifiedSince
+ ],
+ responses: {
+ 202: {
+ headersMapper: Mappers.FileSystemDeleteHeaders
+ },
+ default: {
+ bodyMapper: Mappers.StorageError
+ }
+ },
+ isXML: true,
+ serializer
+};
+
+const fileSystemListPathsOperationSpec: msRest.OperationSpec = {
+ httpMethod: "GET",
+ path: "{filesystem}",
+ urlParameters: [
+ Parameters.url,
+ Parameters.fileSystem
+ ],
+ queryParameters: [
+ Parameters.continuation,
+ Parameters.path0,
+ Parameters.recursive0,
+ Parameters.maxResults,
+ Parameters.upn,
+ Parameters.resource1,
+ Parameters.timeout
+ ],
+ headerParameters: [
+ Parameters.requestId,
+ Parameters.version
+ ],
+ responses: {
+ 200: {
+ bodyMapper: Mappers.PathList,
+ headersMapper: Mappers.FileSystemListPathsHeaders
+ },
+ default: {
+ bodyMapper: Mappers.StorageError
+ }
+ },
+ isXML: true,
+ serializer
+};
+
+const fileSystemListBlobHierarchySegmentOperationSpec: msRest.OperationSpec = {
+ httpMethod: "GET",
+ path: "{filesystem}",
+ urlParameters: [
+ Parameters.url,
+ Parameters.fileSystem
+ ],
+ queryParameters: [
+ Parameters.prefix,
+ Parameters.delimiter,
+ Parameters.marker,
+ Parameters.maxResults,
+ Parameters.include,
+ Parameters.showonly,
+ Parameters.timeout,
+ Parameters.restype,
+ Parameters.comp0
+ ],
+ headerParameters: [
+ Parameters.version,
+ Parameters.requestId
+ ],
+ responses: {
+ 200: {
+ bodyMapper: Mappers.ListBlobsHierarchySegmentResponse,
+ headersMapper: Mappers.FileSystemListBlobHierarchySegmentHeaders
+ },
+ default: {
+ bodyMapper: Mappers.StorageError
+ }
+ },
+ isXML: true,
+ serializer
+};
+
+// specifications for new method group start
+const pathCreateOperationSpec: msRest.OperationSpec = {
+ httpMethod: "PUT",
+ path: "{filesystem}/{path}",
+ urlParameters: [
+ Parameters.url,
+ Parameters.fileSystem,
+ Parameters.path1
+ ],
+ queryParameters: [
+ Parameters.resource2,
+ Parameters.continuation,
+ Parameters.mode0,
+ Parameters.timeout
+ ],
+ headerParameters: [
+ Parameters.renameSource,
+ Parameters.sourceLeaseId,
+ Parameters.properties,
+ Parameters.permissions,
+ Parameters.umask,
+ Parameters.owner,
+ Parameters.group,
+ Parameters.acl,
+ Parameters.proposedLeaseId,
+ Parameters.leaseDuration,
+ Parameters.expiryOptions0,
+ Parameters.expiresOn,
+ Parameters.encryptionContext,
+ Parameters.requestId,
+ Parameters.version,
+ Parameters.cacheControl,
+ Parameters.contentEncoding,
+ Parameters.contentLanguage,
+ Parameters.contentDisposition,
+ Parameters.contentType,
+ Parameters.leaseId,
+ Parameters.ifMatch,
+ Parameters.ifNoneMatch,
+ Parameters.ifModifiedSince,
+ Parameters.ifUnmodifiedSince,
+ Parameters.sourceIfMatch,
+ Parameters.sourceIfNoneMatch,
+ Parameters.sourceIfModifiedSince,
+ Parameters.sourceIfUnmodifiedSince,
+ Parameters.encryptionKey,
+ Parameters.encryptionKeySha256,
+ Parameters.encryptionAlgorithm
+ ],
+ responses: {
+ 201: {
+ headersMapper: Mappers.PathCreateHeaders
+ },
+ default: {
+ bodyMapper: Mappers.StorageError
+ }
+ },
+ isXML: true,
+ serializer
+};
+
+const pathUpdateOperationSpec: msRest.OperationSpec = {
+ httpMethod: "PATCH",
+ path: "{filesystem}/{path}",
+ urlParameters: [
+ Parameters.url,
+ Parameters.fileSystem,
+ Parameters.path1
+ ],
+ queryParameters: [
+ Parameters.action0,
+ Parameters.maxRecords,
+ Parameters.continuation,
+ Parameters.mode1,
+ Parameters.forceFlag,
+ Parameters.position,
+ Parameters.retainUncommittedData,
+ Parameters.close,
+ Parameters.timeout
+ ],
+ headerParameters: [
+ Parameters.contentLength,
+ Parameters.properties,
+ Parameters.owner,
+ Parameters.group,
+ Parameters.permissions,
+ Parameters.acl,
+ Parameters.requestId,
+ Parameters.version,
+ Parameters.contentMD5,
+ Parameters.cacheControl,
+ Parameters.contentType,
+ Parameters.contentDisposition,
+ Parameters.contentEncoding,
+ Parameters.contentLanguage,
+ Parameters.leaseId,
+ Parameters.ifMatch,
+ Parameters.ifNoneMatch,
+ Parameters.ifModifiedSince,
+ Parameters.ifUnmodifiedSince
+ ],
+ requestBody: {
+ parameterPath: "body",
+ mapper: {
+ required: true,
+ serializedName: "body",
+ type: {
+ name: "Stream"
+ }
+ }
+ },
+ contentType: "application/octet-stream",
+ responses: {
+ 200: {
+ bodyMapper: Mappers.SetAccessControlRecursiveResponse,
+ headersMapper: Mappers.PathUpdateHeaders
+ },
+ 202: {
+ headersMapper: Mappers.PathUpdateHeaders
+ },
+ default: {
+ bodyMapper: Mappers.StorageError
+ }
+ },
+ isXML: true,
+ serializer
+};
+
+const pathLeaseOperationSpec: msRest.OperationSpec = {
+ httpMethod: "POST",
+ path: "{filesystem}/{path}",
+ urlParameters: [
+ Parameters.url,
+ Parameters.fileSystem,
+ Parameters.path1
+ ],
+ queryParameters: [
+ Parameters.timeout
+ ],
+ headerParameters: [
+ Parameters.xMsLeaseAction,
+ Parameters.xMsLeaseDuration,
+ Parameters.xMsLeaseBreakPeriod,
+ Parameters.proposedLeaseId,
+ Parameters.requestId,
+ Parameters.version,
+ Parameters.leaseId,
+ Parameters.ifMatch,
+ Parameters.ifNoneMatch,
+ Parameters.ifModifiedSince,
+ Parameters.ifUnmodifiedSince
+ ],
+ responses: {
+ 200: {
+ headersMapper: Mappers.PathLeaseHeaders
+ },
+ 201: {
+ headersMapper: Mappers.PathLeaseHeaders
+ },
+ 202: {
+ headersMapper: Mappers.PathLeaseHeaders
+ },
+ default: {
+ bodyMapper: Mappers.StorageError
+ }
+ },
+ isXML: true,
+ serializer
+};
+
+const pathReadOperationSpec: msRest.OperationSpec = {
+ httpMethod: "GET",
+ path: "{filesystem}/{path}",
+ urlParameters: [
+ Parameters.url,
+ Parameters.fileSystem,
+ Parameters.path1
+ ],
+ queryParameters: [
+ Parameters.timeout
+ ],
+ headerParameters: [
+ Parameters.range,
+ Parameters.xMsRangeGetContentMd5,
+ Parameters.requestId,
+ Parameters.version,
+ Parameters.leaseId,
+ Parameters.ifMatch,
+ Parameters.ifNoneMatch,
+ Parameters.ifModifiedSince,
+ Parameters.ifUnmodifiedSince,
+ Parameters.encryptionKey,
+ Parameters.encryptionKeySha256,
+ Parameters.encryptionAlgorithm
+ ],
+ responses: {
+ 200: {
+ bodyMapper: {
+ serializedName: "Stream",
+ type: {
+ name: "Stream"
+ }
+ },
+ headersMapper: Mappers.PathReadHeaders
+ },
+ 206: {
+ bodyMapper: {
+ serializedName: "Stream",
+ type: {
+ name: "Stream"
+ }
+ },
+ headersMapper: Mappers.PathReadHeaders
+ },
+ default: {
+ bodyMapper: Mappers.StorageError
+ }
+ },
+ isXML: true,
+ serializer
+};
+
+const pathGetPropertiesOperationSpec: msRest.OperationSpec = {
+ httpMethod: "HEAD",
+ path: "{filesystem}/{path}",
+ urlParameters: [
+ Parameters.url,
+ Parameters.fileSystem,
+ Parameters.path1
+ ],
+ queryParameters: [
+ Parameters.action1,
+ Parameters.upn,
+ Parameters.timeout
+ ],
+ headerParameters: [
+ Parameters.requestId,
+ Parameters.version,
+ Parameters.leaseId,
+ Parameters.ifMatch,
+ Parameters.ifNoneMatch,
+ Parameters.ifModifiedSince,
+ Parameters.ifUnmodifiedSince
+ ],
+ responses: {
+ 200: {
+ headersMapper: Mappers.PathGetPropertiesHeaders
+ },
+ default: {
+ bodyMapper: Mappers.StorageError
+ }
+ },
+ isXML: true,
+ serializer
+};
+
+const pathDeleteOperationSpec: msRest.OperationSpec = {
+ httpMethod: "DELETE",
+ path: "{filesystem}/{path}",
+ urlParameters: [
+ Parameters.url,
+ Parameters.fileSystem,
+ Parameters.path1
+ ],
+ queryParameters: [
+ Parameters.recursive1,
+ Parameters.continuation,
+ Parameters.paginated,
+ Parameters.timeout
+ ],
+ headerParameters: [
+ Parameters.requestId,
+ Parameters.version,
+ Parameters.leaseId,
+ Parameters.ifMatch,
+ Parameters.ifNoneMatch,
+ Parameters.ifModifiedSince,
+ Parameters.ifUnmodifiedSince
+ ],
+ responses: {
+ 200: {
+ headersMapper: Mappers.PathDeleteHeaders
+ },
+ 202: {
+ headersMapper: Mappers.PathDeleteHeaders
+ },
+ default: {
+ bodyMapper: Mappers.StorageError
+ }
+ },
+ isXML: true,
+ serializer
+};
+
+const pathSetAccessControlOperationSpec: msRest.OperationSpec = {
+ httpMethod: "PATCH",
+ path: "{filesystem}/{path}",
+ urlParameters: [
+ Parameters.url,
+ Parameters.fileSystem,
+ Parameters.path1
+ ],
+ queryParameters: [
+ Parameters.timeout,
+ Parameters.action2
+ ],
+ headerParameters: [
+ Parameters.owner,
+ Parameters.group,
+ Parameters.permissions,
+ Parameters.acl,
+ Parameters.requestId,
+ Parameters.version,
+ Parameters.leaseId,
+ Parameters.ifMatch,
+ Parameters.ifNoneMatch,
+ Parameters.ifModifiedSince,
+ Parameters.ifUnmodifiedSince
+ ],
+ responses: {
+ 200: {
+ headersMapper: Mappers.PathSetAccessControlHeaders
+ },
+ default: {
+ bodyMapper: Mappers.StorageError
+ }
+ },
+ isXML: true,
+ serializer
+};
+
+const pathSetAccessControlRecursiveOperationSpec: msRest.OperationSpec = {
+ httpMethod: "PATCH",
+ path: "{filesystem}/{path}",
+ urlParameters: [
+ Parameters.url,
+ Parameters.fileSystem,
+ Parameters.path1
+ ],
+ queryParameters: [
+ Parameters.timeout,
+ Parameters.continuation,
+ Parameters.mode1,
+ Parameters.forceFlag,
+ Parameters.maxRecords,
+ Parameters.action3
+ ],
+ headerParameters: [
+ Parameters.acl,
+ Parameters.requestId,
+ Parameters.version
+ ],
+ responses: {
+ 200: {
+ bodyMapper: Mappers.SetAccessControlRecursiveResponse,
+ headersMapper: Mappers.PathSetAccessControlRecursiveHeaders
+ },
+ default: {
+ bodyMapper: Mappers.StorageError
+ }
+ },
+ isXML: true,
+ serializer
+};
+
+const pathFlushDataOperationSpec: msRest.OperationSpec = {
+ httpMethod: "PATCH",
+ path: "{filesystem}/{path}",
+ urlParameters: [
+ Parameters.url,
+ Parameters.fileSystem,
+ Parameters.path1
+ ],
+ queryParameters: [
+ Parameters.timeout,
+ Parameters.position,
+ Parameters.retainUncommittedData,
+ Parameters.close,
+ Parameters.action4
+ ],
+ headerParameters: [
+ Parameters.contentLength,
+ Parameters.leaseAction,
+ Parameters.leaseDuration,
+ Parameters.proposedLeaseId,
+ Parameters.requestId,
+ Parameters.version,
+ Parameters.contentMD5,
+ Parameters.cacheControl,
+ Parameters.contentType,
+ Parameters.contentDisposition,
+ Parameters.contentEncoding,
+ Parameters.contentLanguage,
+ Parameters.leaseId,
+ Parameters.ifMatch,
+ Parameters.ifNoneMatch,
+ Parameters.ifModifiedSince,
+ Parameters.ifUnmodifiedSince,
+ Parameters.encryptionKey,
+ Parameters.encryptionKeySha256,
+ Parameters.encryptionAlgorithm
+ ],
+ responses: {
+ 200: {
+ headersMapper: Mappers.PathFlushDataHeaders
+ },
+ default: {
+ bodyMapper: Mappers.StorageError
+ }
+ },
+ isXML: true,
+ serializer
+};
+
+const pathAppendDataOperationSpec: msRest.OperationSpec = {
+ httpMethod: "PATCH",
+ path: "{filesystem}/{path}",
+ urlParameters: [
+ Parameters.url,
+ Parameters.fileSystem,
+ Parameters.path1
+ ],
+ queryParameters: [
+ Parameters.position,
+ Parameters.timeout,
+ Parameters.flush,
+ Parameters.action5
+ ],
+ headerParameters: [
+ Parameters.contentLength,
+ Parameters.transactionalContentCrc64,
+ Parameters.leaseAction,
+ Parameters.leaseDuration,
+ Parameters.proposedLeaseId,
+ Parameters.requestId,
+ Parameters.version,
+ Parameters.transactionalContentHash,
+ Parameters.leaseId,
+ Parameters.encryptionKey,
+ Parameters.encryptionKeySha256,
+ Parameters.encryptionAlgorithm
+ ],
+ requestBody: {
+ parameterPath: "body",
+ mapper: {
+ required: true,
+ serializedName: "body",
+ type: {
+ name: "Stream"
+ }
+ }
+ },
+ responses: {
+ 202: {
+ headersMapper: Mappers.PathAppendDataHeaders
+ },
+ default: {
+ bodyMapper: Mappers.StorageError
+ }
+ },
+ isXML: true,
+ serializer
+};
+
+const pathSetExpiryOperationSpec: msRest.OperationSpec = {
+ httpMethod: "PUT",
+ path: "{filesystem}/{path}",
+ urlParameters: [
+ Parameters.url,
+ Parameters.fileSystem,
+ Parameters.path1
+ ],
+ queryParameters: [
+ Parameters.timeout,
+ Parameters.comp1
+ ],
+ headerParameters: [
+ Parameters.version,
+ Parameters.requestId,
+ Parameters.expiryOptions1,
+ Parameters.expiresOn
+ ],
+ responses: {
+ 200: {
+ headersMapper: Mappers.PathSetExpiryHeaders
+ },
+ default: {
+ bodyMapper: Mappers.StorageError
+ }
+ },
+ isXML: true,
+ serializer
+};
+
+const pathUndeleteOperationSpec: msRest.OperationSpec = {
+ httpMethod: "PUT",
+ path: "{filesystem}/{path}",
+ urlParameters: [
+ Parameters.url,
+ Parameters.fileSystem,
+ Parameters.path1
+ ],
+ queryParameters: [
+ Parameters.timeout,
+ Parameters.comp2
+ ],
+ headerParameters: [
+ Parameters.undeleteSource,
+ Parameters.version,
+ Parameters.requestId
+ ],
+ responses: {
+ 200: {
+ headersMapper: Mappers.PathUndeleteHeaders
+ },
+ default: {
+ bodyMapper: Mappers.StorageError
+ }
+ },
+ isXML: true,
+ serializer
+};
+
+const Specifications: { [key: number]: msRest.OperationSpec } = {};
+Specifications[Operation.Service_ListFileSystems] = serviceListFileSystemsOperationSpec;
+Specifications[Operation.FileSystem_Create] = fileSystemCreateOperationSpec;
+Specifications[Operation.FileSystem_SetProperties] = fileSystemSetPropertiesOperationSpec;
+Specifications[Operation.FileSystem_GetProperties] = fileSystemGetPropertiesOperationSpec;
+Specifications[Operation.FileSystem_Delete] = fileSystemDeleteOperationSpec;
+Specifications[Operation.FileSystem_ListPaths] = fileSystemListPathsOperationSpec;
+Specifications[Operation.FileSystem_ListBlobHierarchySegment] = fileSystemListBlobHierarchySegmentOperationSpec;
+Specifications[Operation.Path_Create] = pathCreateOperationSpec;
+Specifications[Operation.Path_Update] = pathUpdateOperationSpec;
+Specifications[Operation.Path_Lease] = pathLeaseOperationSpec;
+Specifications[Operation.Path_Read] = pathReadOperationSpec;
+Specifications[Operation.Path_GetProperties] = pathGetPropertiesOperationSpec;
+Specifications[Operation.Path_Delete] = pathDeleteOperationSpec;
+Specifications[Operation.Path_SetAccessControl] = pathSetAccessControlOperationSpec;
+Specifications[Operation.Path_SetAccessControlRecursive] = pathSetAccessControlRecursiveOperationSpec;
+Specifications[Operation.Path_FlushData] = pathFlushDataOperationSpec;
+Specifications[Operation.Path_AppendData] = pathAppendDataOperationSpec;
+Specifications[Operation.Path_SetExpiry] = pathSetExpiryOperationSpec;
+Specifications[Operation.Path_Undelete] = pathUndeleteOperationSpec;
+export default Specifications;
diff --git a/src/dfs/generated/errors/DeserializationError.ts b/src/dfs/generated/errors/DeserializationError.ts
new file mode 100644
index 000000000..82a549096
--- /dev/null
+++ b/src/dfs/generated/errors/DeserializationError.ts
@@ -0,0 +1,8 @@
+import MiddlewareError from './MiddlewareError';
+
+export default class DeserializationError extends MiddlewareError {
+ public constructor(message: string) {
+ super(400, message);
+ this.name = "DeserializationError";
+ }
+}
diff --git a/src/dfs/generated/errors/MiddlewareError.ts b/src/dfs/generated/errors/MiddlewareError.ts
new file mode 100644
index 000000000..b39bbcd0b
--- /dev/null
+++ b/src/dfs/generated/errors/MiddlewareError.ts
@@ -0,0 +1,29 @@
+import { OutgoingHttpHeaders } from 'http';
+
+export default class MiddlewareError extends Error {
+ /**
+ * Creates an instance of MiddlewareError.
+ *
+ * @param {number} statusCode HTTP response status code
+ * @param {string} message Error message
+ * @param {string} [statusMessage] HTTP response status message
+ * @param {OutgoingHttpHeaders} [headers] HTTP response headers
+ * @param {string} [body] HTTP response body
+ * @param {string} [contentType] HTTP contentType
+ * @memberof MiddlewareError
+ */
+ constructor(
+ public readonly statusCode: number,
+ public readonly message: string,
+ public readonly statusMessage?: string,
+ public readonly headers?: OutgoingHttpHeaders,
+ public readonly body?: string,
+ public readonly contentType?: string
+ ) {
+ super(message);
+ // https://stackoverflow.com/questions/31626231/custom-error-class-in-typescript
+ Object.setPrototypeOf(this, MiddlewareError.prototype);
+
+ this.name = "MiddlewareError";
+ }
+}
diff --git a/src/dfs/generated/errors/OperationMismatchError.ts b/src/dfs/generated/errors/OperationMismatchError.ts
new file mode 100644
index 000000000..65660cea6
--- /dev/null
+++ b/src/dfs/generated/errors/OperationMismatchError.ts
@@ -0,0 +1,11 @@
+import MiddlewareError from './MiddlewareError';
+
+export default class OperationMismatchError extends MiddlewareError {
+ public constructor() {
+ super(
+ 500,
+ "No operation provided in context, please make sure dispatchMiddleware is properly used."
+ );
+ this.name = "OperationMismatchError";
+ }
+}
diff --git a/src/dfs/generated/errors/UnsupportedRequestError.ts b/src/dfs/generated/errors/UnsupportedRequestError.ts
new file mode 100644
index 000000000..1acee87ea
--- /dev/null
+++ b/src/dfs/generated/errors/UnsupportedRequestError.ts
@@ -0,0 +1,11 @@
+import MiddlewareError from './MiddlewareError';
+
+export default class UnsupportedRequestError extends MiddlewareError {
+ public constructor() {
+ super(
+ 400,
+ "Incoming URL doesn't match any of swagger defined request patterns."
+ );
+ this.name = "UnsupportedRequestError";
+ }
+}
diff --git a/src/dfs/generated/handlers/IFileSystemOperationsHandler.ts b/src/dfs/generated/handlers/IFileSystemOperationsHandler.ts
new file mode 100644
index 000000000..45be70762
--- /dev/null
+++ b/src/dfs/generated/handlers/IFileSystemOperationsHandler.ts
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is
+ * regenerated.
+ */
+// tslint:disable:max-line-length
+
+import * as Models from "../artifacts/models";
+import Context from "../Context";
+
+export default interface IFileSystemOperationsHandler {
+ create(options: Models.FileSystemCreateOptionalParams, context: Context): Promise;
+ setProperties(options: Models.FileSystemSetPropertiesOptionalParams, context: Context): Promise;
+ getProperties(options: Models.FileSystemGetPropertiesOptionalParams, context: Context): Promise;
+ delete(options: Models.FileSystemDeleteMethodOptionalParams, context: Context): Promise;
+ listPaths(recursive: boolean, options: Models.FileSystemListPathsOptionalParams, context: Context): Promise;
+ listBlobHierarchySegment(options: Models.FileSystemListBlobHierarchySegmentOptionalParams, context: Context): Promise;
+}
diff --git a/src/dfs/generated/handlers/IHandlers.ts b/src/dfs/generated/handlers/IHandlers.ts
new file mode 100644
index 000000000..d7c5d5462
--- /dev/null
+++ b/src/dfs/generated/handlers/IHandlers.ts
@@ -0,0 +1,11 @@
+// tslint:disable:ordered-imports
+import IServiceHandler from "./IServiceHandler";
+import IFileSystemOperationsHandler from "./IFileSystemOperationsHandler";
+import IPathOperationsHandler from "./IPathOperationsHandler";
+
+export interface IHandlers {
+ serviceHandler: IServiceHandler;
+ fileSystemOperationsHandler: IFileSystemOperationsHandler;
+ pathOperationsHandler: IPathOperationsHandler;
+}
+export default IHandlers;
diff --git a/src/dfs/generated/handlers/IPathOperationsHandler.ts b/src/dfs/generated/handlers/IPathOperationsHandler.ts
new file mode 100644
index 000000000..2166f0841
--- /dev/null
+++ b/src/dfs/generated/handlers/IPathOperationsHandler.ts
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is
+ * regenerated.
+ */
+// tslint:disable:max-line-length
+
+import * as Models from "../artifacts/models";
+import Context from "../Context";
+
+export default interface IPathOperationsHandler {
+ create(options: Models.PathCreateOptionalParams, context: Context): Promise;
+ update(action: Models.PathUpdateAction, mode: Models.PathSetAccessControlRecursiveMode, body: NodeJS.ReadableStream, options: Models.PathUpdateOptionalParams, context: Context): Promise;
+ lease(xMsLeaseAction: Models.PathLeaseAction, options: Models.PathLeaseOptionalParams, context: Context): Promise;
+ read(options: Models.PathReadOptionalParams, context: Context): Promise;
+ getProperties(options: Models.PathGetPropertiesOptionalParams, context: Context): Promise;
+ delete(options: Models.PathDeleteMethodOptionalParams, context: Context): Promise;
+ setAccessControl(options: Models.PathSetAccessControlOptionalParams, context: Context): Promise;
+ setAccessControlRecursive(mode: Models.PathSetAccessControlRecursiveMode, options: Models.PathSetAccessControlRecursiveOptionalParams, context: Context): Promise;
+ flushData(options: Models.PathFlushDataOptionalParams, context: Context): Promise;
+ appendData(body: NodeJS.ReadableStream, options: Models.PathAppendDataOptionalParams, context: Context): Promise;
+ setExpiry(expiryOptions: Models.PathExpiryOptions, options: Models.PathSetExpiryOptionalParams, context: Context): Promise;
+ undelete(options: Models.PathUndeleteOptionalParams, context: Context): Promise;
+}
diff --git a/src/dfs/generated/handlers/IServiceHandler.ts b/src/dfs/generated/handlers/IServiceHandler.ts
new file mode 100644
index 000000000..424005711
--- /dev/null
+++ b/src/dfs/generated/handlers/IServiceHandler.ts
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * Changes may cause incorrect behavior and will be lost if the code is
+ * regenerated.
+ */
+// tslint:disable:max-line-length
+
+import * as Models from "../artifacts/models";
+import Context from "../Context";
+
+export default interface IServiceHandler {
+ listFileSystems(options: Models.ServiceListFileSystemsOptionalParams, context: Context): Promise;
+}
diff --git a/src/dfs/generated/handlers/handlerMappers.ts b/src/dfs/generated/handlers/handlerMappers.ts
new file mode 100644
index 000000000..40ccf0180
--- /dev/null
+++ b/src/dfs/generated/handlers/handlerMappers.ts
@@ -0,0 +1,157 @@
+import Operation from "../artifacts/operation";
+
+// tslint:disable:one-line
+
+export interface IHandlerPath {
+ handler: string;
+ method: string;
+ arguments: string[];
+}
+
+const operationHandlerMapping: {[key: number]: IHandlerPath} = {};
+
+operationHandlerMapping[Operation.Service_ListFileSystems] = {
+ arguments: [
+ "options"
+ ],
+ handler: "serviceHandler",
+ method: "listFileSystems"
+};
+operationHandlerMapping[Operation.FileSystem_Create] = {
+ arguments: [
+ "options"
+ ],
+ handler: "fileSystemOperationsHandler",
+ method: "create"
+};
+operationHandlerMapping[Operation.FileSystem_SetProperties] = {
+ arguments: [
+ "options"
+ ],
+ handler: "fileSystemOperationsHandler",
+ method: "setProperties"
+};
+operationHandlerMapping[Operation.FileSystem_GetProperties] = {
+ arguments: [
+ "options"
+ ],
+ handler: "fileSystemOperationsHandler",
+ method: "getProperties"
+};
+operationHandlerMapping[Operation.FileSystem_Delete] = {
+ arguments: [
+ "options"
+ ],
+ handler: "fileSystemOperationsHandler",
+ method: "delete"
+};
+operationHandlerMapping[Operation.FileSystem_ListPaths] = {
+ arguments: [
+ "recursive",
+ "options"
+ ],
+ handler: "fileSystemOperationsHandler",
+ method: "listPaths"
+};
+operationHandlerMapping[Operation.FileSystem_ListBlobHierarchySegment] = {
+ arguments: [
+ "options"
+ ],
+ handler: "fileSystemOperationsHandler",
+ method: "listBlobHierarchySegment"
+};
+operationHandlerMapping[Operation.Path_Create] = {
+ arguments: [
+ "options"
+ ],
+ handler: "pathOperationsHandler",
+ method: "create"
+};
+operationHandlerMapping[Operation.Path_Update] = {
+ arguments: [
+ "action",
+ "mode",
+ "body",
+ "options"
+ ],
+ handler: "pathOperationsHandler",
+ method: "update"
+};
+operationHandlerMapping[Operation.Path_Lease] = {
+ arguments: [
+ "xMsLeaseAction",
+ "options"
+ ],
+ handler: "pathOperationsHandler",
+ method: "lease"
+};
+operationHandlerMapping[Operation.Path_Read] = {
+ arguments: [
+ "options"
+ ],
+ handler: "pathOperationsHandler",
+ method: "read"
+};
+operationHandlerMapping[Operation.Path_GetProperties] = {
+ arguments: [
+ "options"
+ ],
+ handler: "pathOperationsHandler",
+ method: "getProperties"
+};
+operationHandlerMapping[Operation.Path_Delete] = {
+ arguments: [
+ "options"
+ ],
+ handler: "pathOperationsHandler",
+ method: "delete"
+};
+operationHandlerMapping[Operation.Path_SetAccessControl] = {
+ arguments: [
+ "options"
+ ],
+ handler: "pathOperationsHandler",
+ method: "setAccessControl"
+};
+operationHandlerMapping[Operation.Path_SetAccessControlRecursive] = {
+ arguments: [
+ "mode",
+ "options"
+ ],
+ handler: "pathOperationsHandler",
+ method: "setAccessControlRecursive"
+};
+operationHandlerMapping[Operation.Path_FlushData] = {
+ arguments: [
+ "options"
+ ],
+ handler: "pathOperationsHandler",
+ method: "flushData"
+};
+operationHandlerMapping[Operation.Path_AppendData] = {
+ arguments: [
+ "body",
+ "options"
+ ],
+ handler: "pathOperationsHandler",
+ method: "appendData"
+};
+operationHandlerMapping[Operation.Path_SetExpiry] = {
+ arguments: [
+ "expiryOptions",
+ "options"
+ ],
+ handler: "pathOperationsHandler",
+ method: "setExpiry"
+};
+operationHandlerMapping[Operation.Path_Undelete] = {
+ arguments: [
+ "options"
+ ],
+ handler: "pathOperationsHandler",
+ method: "undelete"
+};
+function getHandlerByOperation(operation: Operation): IHandlerPath | undefined {
+ return operationHandlerMapping[operation];
+}
+export default getHandlerByOperation;
diff --git a/src/dfs/generated/middleware/HandlerMiddlewareFactory.ts b/src/dfs/generated/middleware/HandlerMiddlewareFactory.ts
new file mode 100644
index 000000000..60a8b1a63
--- /dev/null
+++ b/src/dfs/generated/middleware/HandlerMiddlewareFactory.ts
@@ -0,0 +1,90 @@
+import Operation from '../artifacts/operation';
+import Specifications from '../artifacts/specifications';
+import Context from '../Context';
+import OperationMismatchError from '../errors/OperationMismatchError';
+import getHandlerByOperation from '../handlers/handlerMappers';
+import IHandlers from '../handlers/IHandlers';
+import { NextFunction } from '../MiddlewareFactory';
+import ILogger from '../utils/ILogger';
+
+/**
+ * Auto generated. HandlerMiddlewareFactory will accept handlers and create handler middleware.
+ *
+ * @export
+ * @class HandlerMiddlewareFactory
+ */
+export default class HandlerMiddlewareFactory {
+ /**
+ * Creates an instance of HandlerMiddlewareFactory.
+ * Accept handlers and create handler middleware.
+ *
+ * @param {IHandlers} handlers Handlers implemented handler interfaces
+ * @param {ILogger} logger A valid logger
+ * @memberof HandlerMiddlewareFactory
+ */
+ constructor(
+ private readonly handlers: IHandlers,
+ private readonly logger: ILogger
+ ) {}
+
+ /**
+ * Creates a handler middleware from input handlers.
+ *
+ * @memberof HandlerMiddlewareFactory
+ */
+ public createHandlerMiddleware(): (
+ context: Context,
+ next: NextFunction
+ ) => void {
+ return (context: Context, next: NextFunction) => {
+ this.logger.info(
+ `HandlerMiddleware: DeserializedParameters=${JSON.stringify(
+ context.handlerParameters,
+ (key, value) => {
+ if (key === "body") {
+ return "ReadableStream";
+ }
+ return value;
+ }
+ )}`,
+ context.contextId
+ );
+
+ if (context.operation === undefined) {
+ const handlerError = new OperationMismatchError();
+ this.logger.error(
+ `HandlerMiddleware: ${handlerError.message}`,
+ context.contextId
+ );
+ return next(handlerError);
+ }
+
+ if (Specifications[context.operation] === undefined) {
+ this.logger.warn(
+ `HandlerMiddleware: cannot find handler for operation ${
+ Operation[context.operation]
+ }`
+ );
+ }
+
+ // We assume handlerPath always exists for every generated operation in generated code
+ const handlerPath = getHandlerByOperation(context.operation)!;
+
+ const args = [];
+ for (const arg of handlerPath.arguments) {
+ args.push(context.handlerParameters![arg]);
+ }
+ args.push(context);
+
+ const handler = (this.handlers as any)[handlerPath.handler];
+ const handlerMethod = handler[handlerPath.method] as () => Promise;
+ handlerMethod
+ .apply(handler, args as any)
+ .then((response: any) => {
+ context.handlerResponses = response;
+ })
+ .then(next)
+ .catch(next);
+ };
+ }
+}
diff --git a/src/dfs/generated/middleware/deserializer.middleware.ts b/src/dfs/generated/middleware/deserializer.middleware.ts
new file mode 100644
index 000000000..88813a165
--- /dev/null
+++ b/src/dfs/generated/middleware/deserializer.middleware.ts
@@ -0,0 +1,59 @@
+import Operation from '../artifacts/operation';
+import Specifications from '../artifacts/specifications';
+import Context from '../Context';
+import DeserializationError from '../errors/DeserializationError';
+import OperationMismatchError from '../errors/OperationMismatchError';
+import IRequest from '../IRequest';
+import { NextFunction } from '../MiddlewareFactory';
+import ILogger from '../utils/ILogger';
+import { deserialize } from '../utils/serializer';
+
+/**
+ * Deserializer Middleware. Deserialize incoming HTTP request into models.
+ *
+ * @export
+ * @param {Context} context
+ * @param {IRequest} req An IRequest object
+ * @param {NextFunction} next An next callback or promise
+ * @param {ILogger} logger A valid logger
+ * @returns {void}
+ */
+export default function deserializerMiddleware(
+ context: Context,
+ req: IRequest,
+ next: NextFunction,
+ logger: ILogger
+): void {
+ logger.verbose(
+ `DeserializerMiddleware: Start deserializing...`,
+ context.contextId
+ );
+
+ if (context.operation === undefined) {
+ const handlerError = new OperationMismatchError();
+ logger.error(
+ `DeserializerMiddleware: ${handlerError.message}`,
+ context.contextId
+ );
+ return next(handlerError);
+ }
+
+ if (Specifications[context.operation] === undefined) {
+ logger.warn(
+ `DeserializerMiddleware: Cannot find deserializer for operation ${
+ Operation[context.operation]
+ }`
+ );
+ }
+
+ deserialize(context, req, Specifications[context.operation], logger)
+ .then(parameters => {
+ context.handlerParameters = parameters;
+ })
+ .then(next)
+ .catch(err => {
+ const deserializationError = new DeserializationError(err.message);
+ deserializationError.stack = err.stack;
+ next(deserializationError);
+ });
+}
diff --git a/src/dfs/generated/middleware/dispatch.middleware.ts b/src/dfs/generated/middleware/dispatch.middleware.ts
new file mode 100644
index 000000000..49b0864c4
--- /dev/null
+++ b/src/dfs/generated/middleware/dispatch.middleware.ts
@@ -0,0 +1,189 @@
+import * as msRest from '@azure/ms-rest-js';
+
+import Operation from '../artifacts/operation';
+import Specifications from '../artifacts/specifications';
+import Context from '../Context';
+import UnsupportedRequestError from '../errors/UnsupportedRequestError';
+import IRequest from '../IRequest';
+import { NextFunction } from '../MiddlewareFactory';
+import ILogger from '../utils/ILogger';
+import { isURITemplateMatch } from '../utils/utils';
+
+/**
+ * Dispatch Middleware will try to find out which operation of current HTTP request belongs to,
+ * by going through request specifications. Operation enum will be assigned to context object.
+ * Make sure dispatchMiddleware is triggered before other generated middleware.
+ *
+ * TODO: Add support for API priorities to deal with both matched APIs
+ *
+ * @export
+ * @param {Context} context Context object
+ * @param {IRequest} req An request object
+ * @param {NextFunction} next A callback
+ * @param {ILogger} logger A valid logger
+ * @returns {void}
+ */
+export default function dispatchMiddleware(
+ context: Context,
+ req: IRequest,
+ next: NextFunction,
+ logger: ILogger
+): void {
+ logger.verbose(
+ `DispatchMiddleware: Dispatching request...`,
+ context.contextId
+ );
+
+ // Sometimes, more than one operations specifications are all valid against current request
+ // Such as a SetContainerMetadata request will fit both CreateContainer and SetContainerMetadata specifications
+ // We need to avoid this kind of situation when define swagger
+ // However, following code will try to find most suitable operation by selecting operation which
+ // have most required conditions met
+ let conditionsMet: number = -1;
+
+ for (const key in Operation) {
+ if (Operation.hasOwnProperty(key)) {
+ const operation = parseInt(key, 10);
+ const res = isRequestAgainstOperation(
+ req,
+ Specifications[operation],
+ context.dispatchPattern
+ );
+ if (res[0] && res[1] > conditionsMet) {
+ context.operation = operation;
+ conditionsMet = res[1];
+ }
+ }
+ }
+
+ if (context.operation === undefined) {
+ const handlerError = new UnsupportedRequestError();
+ logger.error(
+ `DispatchMiddleware: ${handlerError.message}`,
+ context.contextId
+ );
+ return next(handlerError);
+ }
+
+ logger.info(
+ `DispatchMiddleware: Operation=${Operation[context.operation]}`,
+ context.contextId
+ );
+
+ next();
+}
+
+/**
+ * Validation whether current request meets request operation specification.
+ *
+ * @param {IRequest} req
+ * @param {msRest.OperationSpec} spec
+ * @returns {[boolean, number]} Tuple includes validation result and number of met required conditions
+ */
+function isRequestAgainstOperation(
+ req: IRequest,
+ spec: msRest.OperationSpec,
+ dispatchPathPattern?: string
+): [boolean, number] {
+ let metConditionsNum = 0;
+ if (req === undefined || spec === undefined) {
+ return [false, metConditionsNum];
+ }
+
+ const xHttpMethod = req.getHeader("X-HTTP-Method");
+ let method = req.getMethod();
+ if (xHttpMethod && xHttpMethod.length > 0) {
+ const value = xHttpMethod.trim();
+ if (
+ value === "GET" ||
+ value === "MERGE" ||
+ value === "PATCH" ||
+ value === "DELETE"
+ ) {
+ method = value;
+ }
+ }
+
+ // Validate HTTP method
+ if (method !== spec.httpMethod) {
+ return [false, metConditionsNum++];
+ }
+ // Validate URL path
+ const path = spec.path
+ ? spec.path.startsWith("/")
+ ? spec.path
+ : `/${spec.path}`
+ : "/";
+ if (
+ !isURITemplateMatch(
+ // Use dispatch path with priority
+ dispatchPathPattern !== undefined ? dispatchPathPattern : req.getPath(),
+ path
+ )
+ ) {
+ return [false, metConditionsNum++];
+ }
+
+ // Validate required queryParameters
+ for (const queryParameter of spec.queryParameters || []) {
+ if (queryParameter.mapper.required) {
+ const queryValue = req.getQuery(
+ queryParameter.mapper.serializedName || ""
+ );
+ if (queryValue === undefined) {
+ return [false, metConditionsNum];
+ }
+
+ if (
+ queryParameter.mapper.type.name === "Enum" &&
+ queryParameter.mapper.type.allowedValues.findIndex((val) => {
+ return val === queryValue;
+ }) < 0
+ ) {
+ return [false, metConditionsNum];
+ }
+
+ if (
+ queryParameter.mapper.isConstant &&
+ queryParameter.mapper.defaultValue !== queryValue
+ ) {
+ return [false, metConditionsNum];
+ }
+
+ metConditionsNum++;
+ }
+ }
+
+ // Validate required header parameters
+ for (const headerParameter of spec.headerParameters || []) {
+ if (headerParameter.mapper.required) {
+ const headerValue = req.getHeader(
+ headerParameter.mapper.serializedName || ""
+ );
+ if (headerValue === undefined) {
+ return [false, metConditionsNum];
+ }
+
+ if (
+ headerParameter.mapper.type.name === "Enum" &&
+ headerParameter.mapper.type.allowedValues.findIndex((val) => {
+ return val === headerValue;
+ }) < 0
+ ) {
+ return [false, metConditionsNum];
+ }
+
+ if (
+ headerParameter.mapper.isConstant &&
+ `${headerParameter.mapper.defaultValue || ""}`.toLowerCase() !==
+ headerValue.toLowerCase()
+ ) {
+ return [false, metConditionsNum];
+ }
+
+ metConditionsNum++;
+ }
+ }
+
+ return [true, metConditionsNum];
+}
diff --git a/src/dfs/generated/middleware/end.middleware.ts b/src/dfs/generated/middleware/end.middleware.ts
new file mode 100644
index 000000000..91692225c
--- /dev/null
+++ b/src/dfs/generated/middleware/end.middleware.ts
@@ -0,0 +1,32 @@
+import Context from '../Context';
+import IResponse from '../IResponse';
+import ILogger from '../utils/ILogger';
+
+/**
+ * End middleware is used to send out final HTTP response.
+ *
+ * @export
+ * @param {Context} context
+ * @param {Request} req An express compatible Request object
+ * @param {Response} res An express compatible Response object
+ * @param {ILogger} logger A valid logger
+ */
+export default function endMiddleware(
+ context: Context,
+ res: IResponse,
+ logger: ILogger,
+): void {
+ const totalTimeInMS = context.startTime
+ ? new Date().getTime() - context.startTime.getTime()
+ : undefined;
+
+ logger.info(
+ // tslint:disable-next-line:max-line-length
+ `EndMiddleware: End response. TotalTimeInMS=${totalTimeInMS} StatusCode=${res.getStatusCode()} StatusMessage=${res.getStatusMessage()} Headers=${JSON.stringify(
+ res.getHeaders()
+ )}`,
+ context.contextId
+ );
+
+ res.getBodyStream().end();
+}
diff --git a/src/dfs/generated/middleware/error.middleware.ts b/src/dfs/generated/middleware/error.middleware.ts
new file mode 100644
index 000000000..080dd7250
--- /dev/null
+++ b/src/dfs/generated/middleware/error.middleware.ts
@@ -0,0 +1,134 @@
+import Context from '../Context';
+import MiddlewareError from '../errors/MiddlewareError';
+import IRequest from '../IRequest';
+import IResponse from '../IResponse';
+import { NextFunction } from '../MiddlewareFactory';
+import ILogger from '../utils/ILogger';
+
+/**
+ * ErrorMiddleware handles following 2 kinds of errors thrown from previous middleware or handlers:
+ *
+ * 1. MiddlewareError will be serialized.
+ * This includes most of expected errors, such as 4XX or some 5xx errors are MiddlewareError.
+ *
+ * 2. Other unexpected errors will be serialized to 500 Internal Server error directly.
+ * Every this kind of error should be carefully checked, and consider to handle it as a MiddlewareError.
+ *
+ * @export
+ * @param {Context} context
+ * @param {(MiddlewareError | Error)} err A MiddlewareError or Error object
+ * @param {Request} req An express compatible Request object
+ * @param {Response} res An express compatible Response object
+ * @param {NextFunction} next An express middleware next callback
+ * @param {ILogger} logger A valid logger
+ * @returns {void}
+ */
+export default function errorMiddleware(
+ context: Context,
+ err: MiddlewareError | Error,
+ req: IRequest,
+ res: IResponse,
+ next: NextFunction,
+ logger: ILogger
+): void {
+ if (res.headersSent()) {
+ logger.warn(
+ `Error middleware received an error, but response.headersSent is true, pass error to next middleware`,
+ context.contextId
+ );
+ return next(err);
+ }
+
+ // Only handle ServerError, for other customized error types hand over to
+ // other error handlers.
+ if (err instanceof MiddlewareError) {
+ logger.error(
+ `ErrorMiddleware: Received a MiddlewareError, fill error information to HTTP response`,
+ context.contextId
+ );
+
+ logger.error(
+ `ErrorMiddleware: ErrorName=${err.name} ErrorMessage=${
+ err.message
+ } ErrorHTTPStatusCode=${err.statusCode} ErrorHTTPStatusMessage=${
+ err.statusMessage
+ } ErrorHTTPHeaders=${JSON.stringify(
+ err.headers
+ )} ErrorHTTPBody=${JSON.stringify(err.body)} ErrorStack=${JSON.stringify(
+ err.stack
+ )}`,
+ context.contextId
+ );
+
+ logger.error(
+ `ErrorMiddleware: Set HTTP code: ${err.statusCode}`,
+ context.contextId
+ );
+
+ res.setStatusCode(err.statusCode);
+ if (err.statusMessage) {
+ logger.error(
+ `ErrorMiddleware: Set HTTP status message: ${err.statusMessage}`,
+ context.contextId
+ );
+ res.setStatusMessage(err.statusMessage);
+ }
+
+ if (err.headers) {
+ for (const key in err.headers) {
+ if (err.headers.hasOwnProperty(key)) {
+ const value = err.headers[key];
+ if (value) {
+ logger.error(
+ `ErrorMiddleware: Set HTTP Header: ${key}=${value}`,
+ context.contextId
+ );
+ res.setHeader(key, value);
+ }
+ }
+ }
+ }
+
+ if (err.contentType && req.getMethod() !== "HEAD") {
+ logger.error(
+ `ErrorMiddleware: Set content type: ${err.contentType}`,
+ context.contextId
+ );
+ res.setContentType(err.contentType);
+ }
+
+ logger.error(
+ `ErrorMiddleware: Set HTTP body: ${JSON.stringify(err.body)}`,
+ context.contextId
+ );
+ if (err.body && req.getMethod() !== "HEAD") {
+ res.getBodyStream().write(err.body);
+ }
+ } else if (err instanceof Error) {
+ logger.error(
+ `ErrorMiddleware: Received an error, fill error information to HTTP response`,
+ context.contextId
+ );
+ logger.error(
+ `ErrorMiddleware: ErrorName=${err.name} ErrorMessage=${
+ err.message
+ } ErrorStack=${JSON.stringify(err.stack)}`,
+ context.contextId
+ );
+ logger.error(`ErrorMiddleware: Set HTTP code: ${500}`, context.contextId);
+ res.setStatusCode(500);
+
+ // logger.error(
+ // `ErrorMiddleware: Set error message: ${err.message}`,
+ // context.contextID
+ // );
+ // res.getBodyStream().write(err.message);
+ } else {
+ logger.warn(
+ `ErrorMiddleware: Received unhandled error object`,
+ context.contextId
+ );
+ }
+
+ next();
+}
diff --git a/src/dfs/generated/middleware/serializer.middleware.ts b/src/dfs/generated/middleware/serializer.middleware.ts
new file mode 100644
index 000000000..66460cf10
--- /dev/null
+++ b/src/dfs/generated/middleware/serializer.middleware.ts
@@ -0,0 +1,57 @@
+import Operation from '../artifacts/operation';
+import Specifications from '../artifacts/specifications';
+import Context from '../Context';
+import OperationMismatchError from '../errors/OperationMismatchError';
+import IResponse from '../IResponse';
+import { NextFunction } from '../MiddlewareFactory';
+import ILogger from '../utils/ILogger';
+import { serialize } from '../utils/serializer';
+
+/**
+ * SerializerMiddleware will serialize models into HTTP responses.
+ *
+ * @export
+ * @param {Response} res
+ * @param {NextFunction} next
+ * @param {ILogger} logger
+ * @param {Context} context
+ */
+export default function serializerMiddleware(
+ context: Context,
+ res: IResponse,
+ next: NextFunction,
+ logger: ILogger
+): void {
+ logger.verbose(
+ `SerializerMiddleware: Start serializing...`,
+ context.contextId
+ );
+
+ if (context.operation === undefined) {
+ const handlerError = new OperationMismatchError();
+ logger.error(
+ `SerializerMiddleware: ${handlerError.message}`,
+ context.contextId
+ );
+ return next(handlerError);
+ }
+
+ if (Specifications[context.operation] === undefined) {
+ logger.warn(
+ `SerializerMiddleware: Cannot find serializer for operation ${
+ Operation[context.operation]
+ }`,
+ context.contextId
+ );
+ }
+
+ serialize(
+ context,
+ res,
+ Specifications[context.operation],
+ context.handlerResponses,
+ logger
+ )
+ .then(next)
+ .catch(next);
+}
diff --git a/src/dfs/generated/utils/ILogger.ts b/src/dfs/generated/utils/ILogger.ts
new file mode 100644
index 000000000..cef94893d
--- /dev/null
+++ b/src/dfs/generated/utils/ILogger.ts
@@ -0,0 +1,13 @@
+/**
+ * An interface of logger used by generated code.
+ *
+ * @export
+ * @interface ILogger
+ */
+export default interface ILogger {
+ error(message: string, contextID?: string): void;
+ warn(message: string, contextID?: string): void;
+ info(message: string, contextID?: string): void;
+ verbose(message: string, contextID?: string): void;
+ debug(message: string, contextID?: string): void;
+}
diff --git a/src/dfs/generated/utils/serializer.ts b/src/dfs/generated/utils/serializer.ts
new file mode 100644
index 000000000..8689cbff4
--- /dev/null
+++ b/src/dfs/generated/utils/serializer.ts
@@ -0,0 +1,392 @@
+import * as msRest from '@azure/ms-rest-js';
+
+import * as Mappers from '../artifacts/mappers';
+import Context, { IHandlerParameters } from '../Context';
+import IRequest from '../IRequest';
+import IResponse from '../IResponse';
+import ILogger from './ILogger';
+import { parseXML, stringifyXML } from './xml';
+
+export declare type ParameterPath =
+ | string
+ | string[]
+ | {
+ [propertyName: string]: ParameterPath;
+ };
+
+export async function deserialize(
+ context: Context,
+ req: IRequest,
+ spec: msRest.OperationSpec,
+ logger: ILogger
+): Promise {
+ const parameters: IHandlerParameters = {};
+
+ // Deserialize query parameters
+ for (const queryParameter of spec.queryParameters || []) {
+ if (!queryParameter.mapper.serializedName) {
+ throw new TypeError(
+ `QueryParameter mapper doesn't include valid "serializedName"`
+ );
+ }
+ const queryKey = queryParameter.mapper.serializedName;
+ let queryValueOriginal: string | string[] | undefined = req.getQuery(
+ queryKey
+ );
+
+ if (
+ queryValueOriginal !== undefined &&
+ queryParameter.collectionFormat !== undefined &&
+ queryParameter.mapper.type.name === "Sequence"
+ ) {
+ queryValueOriginal = `${queryValueOriginal}`.split(
+ queryParameter.collectionFormat
+ );
+ }
+
+ const queryValue = spec.serializer.deserialize(
+ queryParameter.mapper,
+ queryValueOriginal,
+ queryKey
+ );
+
+ // TODO: Currently validation is only in serialize method,
+ // remove when adding validateConstraints to deserialize()
+ // TODO: Make serialize return ServerError according to different validations?
+ spec.serializer.serialize(queryParameter.mapper, queryValue);
+
+ setParametersValue(parameters, queryParameter.parameterPath, queryValue);
+ }
+
+ // Deserialize header parameters
+ for (const headerParameter of spec.headerParameters || []) {
+ if (!headerParameter.mapper.serializedName) {
+ throw new TypeError(
+ `HeaderParameter mapper doesn't include valid "serializedName"`
+ );
+ }
+
+ const headerCollectionPrefix:
+ | string
+ | undefined = (headerParameter.mapper as msRest.DictionaryMapper)
+ .headerCollectionPrefix;
+ if (headerCollectionPrefix) {
+ const dictionary: any = {};
+ const headers = req.getHeaders();
+ for (const headerKey of Object.keys(headers)) {
+ if (
+ headerKey
+ .toLowerCase()
+ .startsWith(headerCollectionPrefix.toLocaleLowerCase())
+ ) {
+ // TODO: Validate collection type by serializer
+ dictionary[
+ headerKey.substring(headerCollectionPrefix.length)
+ ] = spec.serializer.serialize(
+ (headerParameter.mapper as msRest.DictionaryMapper).type.value,
+ headers[headerKey],
+ headerKey
+ );
+ }
+ }
+ setParametersValue(parameters, headerParameter.parameterPath, dictionary);
+ } else {
+ const headerKey = headerParameter.mapper.serializedName;
+ const headerValueOriginal = req.getHeader(headerKey);
+ const headerValue = spec.serializer.deserialize(
+ headerParameter.mapper,
+ headerValueOriginal,
+ headerKey
+ );
+
+ // TODO: Currently validation is only in serialize method,
+ // remove when adding validateConstraints to deserialize()
+ spec.serializer.serialize(headerParameter.mapper, headerValue);
+
+ setParametersValue(
+ parameters,
+ headerParameter.parameterPath,
+ headerValue
+ );
+ }
+ }
+
+ // Deserialize body
+ const bodyParameter = spec.requestBody;
+
+ if (bodyParameter && bodyParameter.mapper.type.name === "Stream") {
+ setParametersValue(parameters, "body", req.getBodyStream());
+ } else if (bodyParameter) {
+ const jsonContentTypes = ["application/json", "text/json"];
+ const xmlContentTypes = ["application/xml", "application/atom+xml"];
+ const contentType = req.getHeader("content-type") || "";
+ const contentComponents = !contentType
+ ? []
+ : contentType.split(";").map(component => component.toLowerCase());
+
+ const isRequestWithJSON = contentComponents.some(
+ component => jsonContentTypes.indexOf(component) !== -1
+ ); // TODO
+ const isRequestWithXML =
+ spec.isXML ||
+ contentComponents.some(
+ component => xmlContentTypes.indexOf(component) !== -1
+ );
+ // const isRequestWithStream = false;
+
+ const body = await readRequestIntoText(req);
+ logger.debug(
+ `deserialize(): Raw request body string is (removed all empty characters) ${body.replace(
+ /\s/g,
+ ""
+ )}`,
+ context.contextId
+ );
+
+ req.setBody(body);
+ let parsedBody: object = {};
+ if (isRequestWithJSON) {
+ // read body
+ parsedBody = JSON.parse(body);
+ } else if (isRequestWithXML) {
+ parsedBody = (await parseXML(body)) || {};
+ }
+
+ let valueToDeserialize: any = parsedBody;
+ if (
+ spec.isXML &&
+ bodyParameter.mapper.type.name === msRest.MapperType.Sequence
+ ) {
+ valueToDeserialize =
+ typeof valueToDeserialize === "object"
+ ? valueToDeserialize[bodyParameter.mapper.xmlElementName!]
+ : [];
+ }
+
+ parsedBody = spec.serializer.deserialize(
+ bodyParameter.mapper,
+ valueToDeserialize,
+ bodyParameter.mapper.serializedName!
+ );
+
+ // Validation purpose only, because only serialize supports validation
+ // TODO: Inject convenience layer error into deserialize; Drop @azure/ms-rest-js, move logic into generated code
+ spec.serializer.serialize(bodyParameter.mapper, parsedBody);
+
+ setParametersValue(parameters, bodyParameter.parameterPath, parsedBody);
+ setParametersValue(parameters, "body", req.getBody());
+ }
+
+ return parameters;
+}
+
+async function readRequestIntoText(req: IRequest): Promise {
+ return new Promise((resolve, reject) => {
+ const segments: string[] = [];
+ const bodyStream = req.getBodyStream();
+ bodyStream.on("data", buffer => {
+ segments.push(buffer);
+ });
+ bodyStream.on("error", reject);
+ bodyStream.on("end", () => {
+ const joined = segments.join("");
+ resolve(joined);
+ });
+ });
+}
+
+function setParametersValue(
+ parameters: IHandlerParameters,
+ parameterPath: ParameterPath,
+ parameterValue: any
+) {
+ if (typeof parameterPath === "string") {
+ parameters[parameterPath] = parameterValue;
+ } else if (Array.isArray(parameterPath)) {
+ let leafParent = parameters;
+ for (let i = 0; i < parameterPath.length - 1; i++) {
+ const currentPropertyName = parameterPath[i];
+ if (!leafParent[currentPropertyName]) {
+ leafParent[currentPropertyName] = {};
+ }
+ leafParent = leafParent[currentPropertyName];
+ }
+
+ const lastPropertyName = parameterPath[parameterPath.length - 1];
+ leafParent[lastPropertyName] = parameterValue;
+ } else {
+ throw new TypeError(`parameterPath is not string or string[]`);
+ }
+}
+
+export async function serialize(
+ context: Context,
+ res: IResponse,
+ spec: msRest.OperationSpec,
+ handlerResponse: any,
+ logger: ILogger
+): Promise {
+ const statusCodeInResponse: number = handlerResponse.statusCode;
+ res.setStatusCode(statusCodeInResponse);
+
+ const responseSpec = spec.responses[statusCodeInResponse];
+ if (!responseSpec) {
+ throw new TypeError(
+ `Request specification doesn't include provided response status code`
+ );
+ }
+
+ // Serialize headers
+ const headerSerializer = new msRest.Serializer(Mappers);
+ const headersMapper = responseSpec.headersMapper;
+ if (headersMapper && headersMapper.type.name === "Composite") {
+ const mappersForAllHeaders = headersMapper.type.modelProperties || {};
+
+ // Handle headerMapper one by one
+ for (const key in mappersForAllHeaders) {
+ if (mappersForAllHeaders.hasOwnProperty(key)) {
+ const headerMapper = mappersForAllHeaders[key];
+ const headerName = headerMapper.serializedName;
+ const headerValueOriginal = handlerResponse[key];
+ const headerValueSerialized = headerSerializer.serialize(
+ headerMapper,
+ headerValueOriginal
+ );
+
+ // Handle collection of headers starting with same prefix, such as x-ms-meta prefix
+ const headerCollectionPrefix = (headerMapper as msRest.DictionaryMapper)
+ .headerCollectionPrefix;
+ if (
+ headerCollectionPrefix !== undefined &&
+ headerValueOriginal !== undefined
+ ) {
+ for (const collectionHeaderPartialName in headerValueSerialized) {
+ if (
+ headerValueSerialized.hasOwnProperty(collectionHeaderPartialName)
+ ) {
+ const collectionHeaderValueSerialized =
+ headerValueSerialized[collectionHeaderPartialName];
+ const collectionHeaderName = `${headerCollectionPrefix}${collectionHeaderPartialName}`;
+ if (
+ collectionHeaderName &&
+ collectionHeaderValueSerialized !== undefined
+ ) {
+ res.setHeader(
+ collectionHeaderName,
+ collectionHeaderValueSerialized
+ );
+ }
+ }
+ }
+ } else {
+ if (headerName && headerValueSerialized !== undefined) {
+ res.setHeader(headerName, headerValueSerialized);
+ }
+ }
+ }
+ }
+ }
+
+ // Serialize XML bodies
+ if (
+ spec.isXML &&
+ responseSpec.bodyMapper &&
+ responseSpec.bodyMapper.type.name !== "Stream"
+ ) {
+ let body = spec.serializer.serialize(
+ responseSpec.bodyMapper!,
+ handlerResponse
+ );
+
+ // When root element is sequence type, should wrap with because serialize() doesn't do that
+ if (responseSpec.bodyMapper!.type.name === "Sequence") {
+ const sequenceElementName = responseSpec.bodyMapper!.xmlElementName;
+ if (sequenceElementName !== undefined) {
+ const newBody = {} as any;
+ newBody[sequenceElementName] = body;
+ body = newBody;
+ }
+ }
+
+ const xmlBody = stringifyXML(body, {
+ rootName:
+ responseSpec.bodyMapper!.xmlName ||
+ responseSpec.bodyMapper!.serializedName
+ });
+ res.setContentType(`application/xml`);
+
+ // TODO: Should send response in a serializer?
+ res.getBodyStream().write(xmlBody);
+ logger.debug(
+ `Serializer: Raw response body string is ${xmlBody}`,
+ context.contextId
+ );
+ logger.info(`Serializer: Start returning stream body.`, context.contextId);
+ }
+
+ // Serialize JSON bodies
+ if (
+ !spec.isXML &&
+ responseSpec.bodyMapper &&
+ responseSpec.bodyMapper.type.name !== "Stream"
+ ) {
+ let body = spec.serializer.serialize(
+ responseSpec.bodyMapper!,
+ handlerResponse
+ );
+
+ // When root element is sequence type, should wrap with because serialize() doesn't do that
+ if (responseSpec.bodyMapper!.type.name === "Sequence") {
+ const sequenceElementName = responseSpec.bodyMapper!.xmlElementName;
+ if (sequenceElementName !== undefined) {
+ const newBody = {} as any;
+ newBody[sequenceElementName] = body;
+ body = newBody;
+ }
+ }
+
+ if (!res.getHeader("content-type")) {
+ res.setContentType("application/json");
+ }
+
+ const jsonBody = JSON.stringify(body);
+
+ // TODO: Should send response in a serializer?
+ res.getBodyStream().write(jsonBody);
+ logger.debug(
+ `Serializer: Raw response body string is ${jsonBody}`,
+ context.contextId
+ );
+ logger.info(`Serializer: Start returning stream body.`, context.contextId);
+ }
+
+ // Serialize stream body
+ // TODO: Move to end middleware for end tracking
+ if (
+ handlerResponse.body &&
+ responseSpec.bodyMapper &&
+ responseSpec.bodyMapper.type.name === "Stream"
+ ) {
+ logger.info(`Serializer: Start returning stream body.`, context.contextId);
+
+ await new Promise((resolve, reject) => {
+ (handlerResponse.body as NodeJS.ReadableStream)
+ .on("error", reject)
+ .pipe(res.getBodyStream())
+ .on("error", reject)
+ .on("close", resolve);
+ });
+
+ // const totalTimeInMS = context.startTime
+ // ? new Date().getTime() - context.startTime.getTime()
+ // : undefined;
+
+ // logger.info(
+ // tslint:disable-next-line:max-line-length
+ // `Serializer: End response. TotalTimeInMS=${totalTimeInMS} StatusCode=${res.getStatusCode()} StatusMessage=${res.getStatusMessage()} Headers=${JSON.stringify(
+ // res.getHeaders()
+ // )}`,
+ // context.contextID
+ // );
+ }
+}
diff --git a/src/dfs/generated/utils/utils.ts b/src/dfs/generated/utils/utils.ts
new file mode 100644
index 000000000..8e39e4dd9
--- /dev/null
+++ b/src/dfs/generated/utils/utils.ts
@@ -0,0 +1,20 @@
+import URITemplate from 'uri-templates';
+
+export function isURITemplateMatch(url: string, template: string): boolean {
+ const uriTemplate = URITemplate(template);
+ // TODO: Fixing $ parsing issue such as $logs container cannot work in strict mode issue
+ const result = (uriTemplate.fromUri as any)(url, { strict: true });
+ if (result === undefined) {
+ return false;
+ }
+
+ for (const key in result) {
+ if (result.hasOwnProperty(key)) {
+ const element = result[key];
+ if (element === "") {
+ return false;
+ }
+ }
+ }
+ return true;
+}
\ No newline at end of file
diff --git a/src/dfs/generated/utils/xml.ts b/src/dfs/generated/utils/xml.ts
new file mode 100644
index 000000000..057eaac91
--- /dev/null
+++ b/src/dfs/generated/utils/xml.ts
@@ -0,0 +1,41 @@
+import * as xml2js from 'xml2js';
+
+export function stringifyXML(obj: any, opts?: { rootName?: string }) {
+ const builder = new xml2js.Builder({
+ explicitArray: false,
+ explicitCharkey: false,
+ renderOpts: {
+ pretty: false
+ },
+ rootName: (opts || {}).rootName
+ });
+ return builder.buildObject(obj);
+}
+
+export function parseXML(
+ str: string,
+ explicitChildrenWithOrder: boolean = false
+): Promise {
+ const xmlParser = new xml2js.Parser({
+ explicitArray: false,
+ explicitCharkey: false,
+ explicitRoot: false,
+ preserveChildrenOrder: explicitChildrenWithOrder,
+ explicitChildren: explicitChildrenWithOrder,
+ emptyTag: undefined
+ });
+ return new Promise((resolve, reject) => {
+ xmlParser.parseString(str, (err?: Error, res?: any) => {
+ if (err) {
+ reject(err);
+ } else {
+ resolve(res);
+ }
+ });
+ });
+}
+
+export function jsonToXML(json: any): string {
+ const build = new xml2js.Builder();
+ return build.buildObject(json);
+}
diff --git a/swagger/datalake-storage-2023-05-03.json b/swagger/datalake-storage-2023-05-03.json
new file mode 100644
index 000000000..eea786a1e
--- /dev/null
+++ b/swagger/datalake-storage-2023-05-03.json
@@ -0,0 +1,3645 @@
+{
+ "swagger": "2.0",
+ "info": {
+ "description": "Azure Data Lake Storage provides storage for Hadoop and other big data workloads.",
+ "title": "Azure Data Lake Storage REST API",
+ "version": "2023-05-03",
+ "x-ms-code-generation-settings": {
+ "internalConstructors": true,
+ "name": "DataLakeStorageClient",
+ "header": "MIT",
+ "strictSpecAdherence": false
+ }
+ },
+ "x-ms-parameterized-host": {
+ "hostTemplate": "{url}",
+ "useSchemePrefix": false,
+ "positionInOperation": "first",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Url"
+ }
+ ]
+ },
+ "schemes": [
+ "https"
+ ],
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "paths": {},
+ "x-ms-paths": {
+ "/": {
+ "get": {
+ "operationId": "Service_ListFileSystems",
+ "summary": "List FileSystems",
+ "description": "List filesystems and their properties in given account.",
+ "x-ms-pageable": {
+ "itemName": "filesystems",
+ "nextLinkName": null
+ },
+ "tags": [
+ "Account Operations"
+ ],
+ "parameters": [
+ {
+ "name": "resource",
+ "in": "query",
+ "description": "The value must be \"account\" for all account operations.",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "account"
+ ],
+ "x-ms-enum": {
+ "name": "AccountResourceType",
+ "modelAsString": false
+ }
+ },
+ {
+ "$ref": "#/parameters/Prefix"
+ },
+ {
+ "$ref": "#/parameters/Continuation"
+ },
+ {
+ "$ref": "#/parameters/MaxResults"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "headers": {
+ "Date": {
+ "description": "A UTC date/time value generated by the service that indicates the time at which the response was initiated.",
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.",
+ "pattern": "^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$",
+ "type": "string"
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "description": "The version of the REST protocol used to process the request.",
+ "type": "string"
+ },
+ "x-ms-continuation": {
+ "x-ms-client-name": "Continuation",
+ "description": "If the number of filesystems to be listed exceeds the maxResults limit, a continuation token is returned in this response header. When a continuation token is returned in the response, it must be specified in a subsequent invocation of the list operation to continue listing the filesystems.",
+ "type": "string"
+ },
+ "Content-Type": {
+ "description": "The content type of list filesystem response. The default content type is application/json.",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/FileSystemList"
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ }
+ },
+ "/{filesystem}": {
+ "put": {
+ "operationId": "FileSystem_Create",
+ "summary": "Create FileSystem",
+ "description": "Create a FileSystem rooted at the specified location. If the FileSystem already exists, the operation fails. This operation does not support conditional HTTP requests.",
+ "tags": [
+ "FileSystem Operations"
+ ],
+ "parameters": [
+ {
+ "$ref": "#/parameters/Properties"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created",
+ "headers": {
+ "Date": {
+ "description": "A UTC date/time value generated by the service that indicates the time at which the response was initiated.",
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "ETag": {
+ "description": "An HTTP entity tag associated with the FileSystem.",
+ "type": "string"
+ },
+ "Last-Modified": {
+ "description": "The data and time the filesystem was last modified. Operations on files and directories do not affect the last modified time.",
+ "format": "date-time-rfc1123",
+ "type": "string"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "ClientRequestId",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.",
+ "pattern": "^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$",
+ "type": "string"
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "description": "The version of the REST protocol used to process the request.",
+ "type": "string"
+ },
+ "x-ms-namespace-enabled": {
+ "x-ms-client-name": "NamespaceEnabled",
+ "description": "A bool string indicates whether the namespace feature is enabled. If \"true\", the namespace is enabled for the filesystem.",
+ "type": "string"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "patch": {
+ "operationId": "FileSystem_SetProperties",
+ "summary": "Set FileSystem Properties",
+ "description": "Set properties for the FileSystem. This operation supports conditional HTTP requests. For more information, see [Specifying Conditional Headers for Blob Service Operations](https://docs.microsoft.com/en-us/rest/api/storageservices/specifying-conditional-headers-for-blob-service-operations).",
+ "tags": [
+ "FileSystem Operations"
+ ],
+ "parameters": [
+ {
+ "$ref": "#/parameters/Properties"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Ok",
+ "headers": {
+ "Date": {
+ "description": "A UTC date/time value generated by the service that indicates the time at which the response was initiated.",
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "ETag": {
+ "description": "An HTTP entity tag associated with the filesystem. Changes to filesystem properties affect the entity tag, but operations on files and directories do not.",
+ "type": "string"
+ },
+ "Last-Modified": {
+ "description": "The data and time the filesystem was last modified. Changes to filesystem properties update the last modified time, but operations on files and directories do not.",
+ "format": "date-time-rfc1123",
+ "type": "string"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.",
+ "pattern": "^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$",
+ "type": "string"
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "description": "The version of the REST protocol used to process the request.",
+ "type": "string"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "head": {
+ "operationId": "FileSystem_GetProperties",
+ "summary": "Get FileSystem Properties.",
+ "description": "All system and user-defined filesystem properties are specified in the response headers.",
+ "tags": [
+ "FileSystem Operations"
+ ],
+ "responses": {
+ "200": {
+ "description": "Ok",
+ "headers": {
+ "Date": {
+ "description": "A UTC date/time value generated by the service that indicates the time at which the response was initiated.",
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "ETag": {
+ "description": "An HTTP entity tag associated with the filesystem. Changes to filesystem properties affect the entity tag, but operations on files and directories do not.",
+ "type": "string"
+ },
+ "Last-Modified": {
+ "description": "The data and time the filesystem was last modified. Changes to filesystem properties update the last modified time, but operations on files and directories do not.",
+ "format": "date-time-rfc1123",
+ "type": "string"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.",
+ "pattern": "^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$",
+ "type": "string"
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "description": "The version of the REST protocol used to process the request.",
+ "type": "string"
+ },
+ "x-ms-properties": {
+ "x-ms-client-name": "Properties",
+ "description": "The user-defined properties associated with the filesystem. A comma-separated list of name and value pairs in the format \"n1=v1, n2=v2, ...\", where each value is a base64 encoded string. Note that the string may only contain ASCII characters in the ISO-8859-1 character set.",
+ "type": "string"
+ },
+ "x-ms-namespace-enabled": {
+ "x-ms-client-name": "NamespaceEnabled",
+ "description": "A bool string indicates whether the namespace feature is enabled. If \"true\", the namespace is enabled for the filesystem.",
+ "type": "string"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "delete": {
+ "operationId": "FileSystem_Delete",
+ "summary": "Delete FileSystem",
+ "description": "Marks the FileSystem for deletion. When a FileSystem is deleted, a FileSystem with the same identifier cannot be created for at least 30 seconds. While the filesystem is being deleted, attempts to create a filesystem with the same identifier will fail with status code 409 (Conflict), with the service returning additional error information indicating that the filesystem is being deleted. All other operations, including operations on any files or directories within the filesystem, will fail with status code 404 (Not Found) while the filesystem is being deleted. This operation supports conditional HTTP requests. For more information, see [Specifying Conditional Headers for Blob Service Operations](https://docs.microsoft.com/en-us/rest/api/storageservices/specifying-conditional-headers-for-blob-service-operations).",
+ "tags": [
+ "FileSystem Operations"
+ ],
+ "responses": {
+ "202": {
+ "description": "Accepted",
+ "headers": {
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.",
+ "pattern": "^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$",
+ "type": "string"
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "description": "The version of the REST protocol used to process the request.",
+ "type": "string"
+ },
+ "Date": {
+ "description": "A UTC date/time value generated by the service that indicates the time at which the response was initiated.",
+ "type": "string",
+ "format": "date-time-rfc1123"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ },
+ "parameters": [
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ }
+ ]
+ },
+ "parameters": [
+ {
+ "$ref": "#/parameters/FileSystem"
+ },
+ {
+ "$ref": "#/parameters/FileSystemResource"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ }
+ ]
+ },
+ "/{filesystem}?resource=filesystem": {
+ "get": {
+ "operationId": "FileSystem_ListPaths",
+ "summary": "List Paths",
+ "description": "List FileSystem paths and their properties.",
+ "x-ms-pageable": {
+ "itemName": "paths",
+ "nextLinkName": null
+ },
+ "tags": [
+ "FileSystem Operations"
+ ],
+ "parameters": [
+ {
+ "$ref": "#/parameters/Continuation"
+ },
+ {
+ "$ref": "#/parameters/Directory"
+ },
+ {
+ "$ref": "#/parameters/RecursiveRequired"
+ },
+ {
+ "$ref": "#/parameters/MaxResults"
+ },
+ {
+ "$ref": "#/parameters/Upn"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Ok",
+ "headers": {
+ "Date": {
+ "description": "A UTC date/time value generated by the service that indicates the time at which the response was initiated.",
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "ETag": {
+ "description": "An HTTP entity tag associated with the filesystem. Changes to filesystem properties affect the entity tag, but operations on files and directories do not.",
+ "type": "string"
+ },
+ "Last-Modified": {
+ "description": "The data and time the filesystem was last modified. Changes to filesystem properties update the last modified time, but operations on files and directories do not.",
+ "format": "date-time-rfc1123",
+ "type": "string"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.",
+ "pattern": "^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$",
+ "type": "string"
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "description": "The version of the REST protocol used to process the request.",
+ "type": "string"
+ },
+ "x-ms-continuation": {
+ "x-ms-client-name": "Continuation",
+ "description": "If the number of paths to be listed exceeds the maxResults limit, a continuation token is returned in this response header. When a continuation token is returned in the response, it must be specified in a subsequent invocation of the list operation to continue listing the paths.",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/PathList"
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "$ref": "#/parameters/FileSystem"
+ },
+ {
+ "$ref": "#/parameters/FileSystemResource"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ }
+ ]
+ },
+ "/{filesystem}?restype=container&comp=list&hierarchy": {
+ "get": {
+ "tags": [
+ "containers"
+ ],
+ "produces": [
+ "application/xml"
+ ],
+ "operationId": "FileSystem_ListBlobHierarchySegment",
+ "description": "The List Blobs operation returns a list of the blobs under the specified container",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Prefix"
+ },
+ {
+ "$ref": "#/parameters/Delimiter"
+ },
+ {
+ "$ref": "#/parameters/Marker"
+ },
+ {
+ "$ref": "#/parameters/MaxResults"
+ },
+ {
+ "$ref": "#/parameters/ListBlobsInclude"
+ },
+ {
+ "$ref": "#/parameters/ListBlobsShowOnly"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success.",
+ "headers": {
+ "Content-Type": {
+ "type": "string",
+ "description": "The media type of the body of the response. For List Blobs this is 'application/xml'"
+ },
+ "x-ms-client-request-id": {
+ "x-ms-client-name": "ClientRequestId",
+ "type": "string",
+ "description": "If a client request id header is sent in the request, this header will be present in the response with the same value."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/ListBlobsHierarchySegmentResponse"
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ },
+ "x-ms-pageable": {
+ "nextLinkName": "NextMarker"
+ }
+ },
+ "parameters": [
+ {
+ "$ref": "#/parameters/FileSystem"
+ },
+ {
+ "name": "restype",
+ "description": "restype",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "container"
+ ]
+ },
+ {
+ "name": "comp",
+ "description": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "list"
+ ]
+ }
+ ]
+ },
+ "/{filesystem}/{path}": {
+ "put": {
+ "operationId": "Path_Create",
+ "summary": "Create File | Create Directory | Rename File | Rename Directory",
+ "description": "Create or rename a file or directory. By default, the destination is overwritten and if the destination already exists and has a lease the lease is broken. This operation supports conditional HTTP requests. For more information, see [Specifying Conditional Headers for Blob Service Operations](https://docs.microsoft.com/en-us/rest/api/storageservices/specifying-conditional-headers-for-blob-service-operations). To fail if the destination already exists, use a conditional request with If-None-Match: \"*\".",
+ "consumes": [
+ "application/octet-stream"
+ ],
+ "tags": [
+ "File and Directory Operations"
+ ],
+ "parameters": [
+ {
+ "name": "resource",
+ "in": "query",
+ "description": "Required only for Create File and Create Directory. The value must be \"file\" or \"directory\".",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "directory",
+ "file"
+ ],
+ "x-ms-enum": {
+ "name": "PathResourceType",
+ "modelAsString": false
+ }
+ },
+ {
+ "$ref": "#/parameters/Continuation"
+ },
+ {
+ "name": "mode",
+ "in": "query",
+ "description": "Optional. Valid only when namespace is enabled. This parameter determines the behavior of the rename operation. The value must be \"legacy\" or \"posix\", and the default value will be \"posix\".",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "legacy",
+ "posix"
+ ],
+ "x-ms-enum": {
+ "name": "PathRenameMode",
+ "modelAsString": false
+ }
+ },
+ {
+ "$ref": "#/parameters/CacheControl"
+ },
+ {
+ "$ref": "#/parameters/ContentEncoding"
+ },
+ {
+ "$ref": "#/parameters/ContentLanguage"
+ },
+ {
+ "$ref": "#/parameters/ContentDisposition"
+ },
+ {
+ "$ref": "#/parameters/ContentType"
+ },
+ {
+ "$ref": "#/parameters/RenameSource"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/SourceLeaseId"
+ },
+ {
+ "$ref": "#/parameters/Properties"
+ },
+ {
+ "$ref": "#/parameters/Permissions"
+ },
+ {
+ "$ref": "#/parameters/Umask"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/SourceIfMatch"
+ },
+ {
+ "$ref": "#/parameters/SourceIfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/SourceIfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/SourceIfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/EncryptionKey"
+ },
+ {
+ "$ref": "#/parameters/EncryptionKeySha256"
+ },
+ {
+ "$ref": "#/parameters/EncryptionAlgorithm"
+ },
+ {
+ "$ref": "#/parameters/Owner"
+ },
+ {
+ "$ref": "#/parameters/Group"
+ },
+ {
+ "$ref": "#/parameters/Acl"
+ },
+ {
+ "$ref": "#/parameters/ProposedLeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/LeaseDurationMethod"
+ },
+ {
+ "$ref": "#/parameters/PathExpiryOptionsOptional"
+ },
+ {
+ "$ref": "#/parameters/PathExpiryTime"
+ },
+ {
+ "$ref": "#/parameters/EncryptionContext"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "The file or directory was created.",
+ "headers": {
+ "Date": {
+ "description": "A UTC date/time value generated by the service that indicates the time at which the response was initiated.",
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "ETag": {
+ "description": "An HTTP entity tag associated with the file or directory.",
+ "type": "string"
+ },
+ "Last-Modified": {
+ "description": "The data and time the file or directory was last modified. Write operations on the file or directory update the last modified time.",
+ "format": "date-time-rfc1123",
+ "type": "string"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.",
+ "pattern": "^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$",
+ "type": "string"
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "description": "The version of the REST protocol used to process the request.",
+ "type": "string"
+ },
+ "x-ms-continuation": {
+ "x-ms-client-name": "Continuation",
+ "description": "When renaming a directory, the number of paths that are renamed with each invocation is limited. If the number of paths to be renamed exceeds this limit, a continuation token is returned in this response header. When a continuation token is returned in the response, it must be specified in a subsequent invocation of the rename operation to continue renaming the directory.",
+ "type": "string"
+ },
+ "Content-Length": {
+ "description": "The size of the resource in bytes.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "x-ms-request-server-encrypted": {
+ "x-ms-client-name": "IsServerEncrypted",
+ "type": "boolean",
+ "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise."
+ },
+ "x-ms-encryption-key-sha256": {
+ "x-ms-client-name": "EncryptionKeySha256",
+ "type": "string",
+ "description": "The SHA-256 hash of the encryption key used to encrypt the blob. This header is only returned when the blob was encrypted with a customer-provided key."
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "patch": {
+ "operationId": "Path_Update",
+ "summary": "Append Data | Flush Data | Set Properties | Set Access Control",
+ "description": "Uploads data to be appended to a file, flushes (writes) previously uploaded data to a file, sets properties for a file or directory, or sets access control for a file or directory. Data can only be appended to a file. Concurrent writes to the same file using multiple clients are not supported. This operation supports conditional HTTP requests. For more information, see [Specifying Conditional Headers for Blob Service Operations](https://docs.microsoft.com/en-us/rest/api/storageservices/specifying-conditional-headers-for-blob-service-operations).",
+ "consumes": [
+ "application/octet-stream"
+ ],
+ "tags": [
+ "File and Directory Operations"
+ ],
+ "parameters": [
+ {
+ "name": "action",
+ "in": "query",
+ "description": "The action must be \"append\" to upload data to be appended to a file, \"flush\" to flush previously uploaded data to a file, \"setProperties\" to set the properties of a file or directory, \"setAccessControl\" to set the owner, group, permissions, or access control list for a file or directory, or \"setAccessControlRecursive\" to set the access control list for a directory recursively. Note that Hierarchical Namespace must be enabled for the account in order to use access control. Also note that the Access Control List (ACL) includes permissions for the owner, owning group, and others, so the x-ms-permissions and x-ms-acl request headers are mutually exclusive.",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "append",
+ "flush",
+ "setProperties",
+ "setAccessControl",
+ "setAccessControlRecursive"
+ ],
+ "x-ms-enum": {
+ "name": "PathUpdateAction",
+ "modelAsString": false
+ }
+ },
+ {
+ "name": "maxRecords",
+ "in": "query",
+ "description": "Optional. Valid for \"SetAccessControlRecursive\" operation. It specifies the maximum number of files or directories on which the acl change will be applied. If omitted or greater than 2,000, the request will process up to 2,000 items",
+ "format": "int32",
+ "minimum": 1,
+ "required": false,
+ "type": "integer"
+ },
+ {
+ "name": "continuation",
+ "in": "query",
+ "description": "Optional. The number of paths processed with each invocation is limited. If the number of paths to be processed exceeds this limit, a continuation token is returned in the response header x-ms-continuation. When a continuation token is returned in the response, it must be percent-encoded and specified in a subsequent invocation of setAccessControlRecursive operation.",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "$ref": "#/parameters/PathSetAccessControlRecursiveMode"
+ },
+ {
+ "$ref": "#/parameters/ForceFlag"
+ },
+ {
+ "$ref": "#/parameters/Position"
+ },
+ {
+ "$ref": "#/parameters/RetainUncommittedData"
+ },
+ {
+ "$ref": "#/parameters/Close"
+ },
+ {
+ "$ref": "#/parameters/ContentLength"
+ },
+ {
+ "$ref": "#/parameters/ContentMD5"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/CacheControl"
+ },
+ {
+ "$ref": "#/parameters/ContentType"
+ },
+ {
+ "$ref": "#/parameters/ContentDisposition"
+ },
+ {
+ "$ref": "#/parameters/ContentEncoding"
+ },
+ {
+ "$ref": "#/parameters/ContentLanguage"
+ },
+ {
+ "$ref": "#/parameters/Properties"
+ },
+ {
+ "$ref": "#/parameters/Owner"
+ },
+ {
+ "$ref": "#/parameters/Group"
+ },
+ {
+ "$ref": "#/parameters/Permissions"
+ },
+ {
+ "$ref": "#/parameters/Acl"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/Body"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The data was flushed (written) to the file or the properties were set successfully. Response body is optional and is valid only for \"SetAccessControlRecursive\"",
+ "headers": {
+ "Date": {
+ "description": "A UTC date/time value generated by the service that indicates the time at which the response was initiated.",
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "ETag": {
+ "description": "An HTTP entity tag associated with the file or directory.",
+ "type": "string"
+ },
+ "Last-Modified": {
+ "description": "The data and time the file or directory was last modified. Write operations on the file or directory update the last modified time.",
+ "format": "date-time-rfc1123",
+ "type": "string"
+ },
+ "Accept-Ranges": {
+ "description": "Indicates that the service supports requests for partial file content.",
+ "type": "string"
+ },
+ "Cache-Control": {
+ "description": "If the Cache-Control request header has previously been set for the resource, that value is returned in this header.",
+ "type": "string"
+ },
+ "Content-Disposition": {
+ "description": "If the Content-Disposition request header has previously been set for the resource, that value is returned in this header.",
+ "type": "string"
+ },
+ "Content-Encoding": {
+ "description": "If the Content-Encoding request header has previously been set for the resource, that value is returned in this header.",
+ "type": "string"
+ },
+ "Content-Language": {
+ "description": "If the Content-Language request header has previously been set for the resource, that value is returned in this header.",
+ "type": "string"
+ },
+ "Content-Length": {
+ "description": "The size of the resource in bytes.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "Content-Range": {
+ "description": "Indicates the range of bytes returned in the event that the client requested a subset of the file by setting the Range request header.",
+ "type": "string"
+ },
+ "Content-Type": {
+ "description": "The content type specified for the resource. If no content type was specified, the default content type is application/octet-stream.",
+ "type": "string"
+ },
+ "Content-MD5": {
+ "description": "An MD5 hash of the request content. This header is only returned for \"Flush\" operation. This header is returned so that the client can check for message content integrity. This header refers to the content of the request, not actual file content.",
+ "type": "string"
+ },
+ "x-ms-properties": {
+ "x-ms-client-name": "Properties",
+ "description": "User-defined properties associated with the file or directory, in the format of a comma-separated list of name and value pairs \"n1=v1, n2=v2, ...\", where each value is a base64 encoded string. Note that the string may only contain ASCII characters in the ISO-8859-1 character set.",
+ "type": "string"
+ },
+ "x-ms-continuation": {
+ "description": "When performing setAccessControlRecursive on a directory, the number of paths that are processed with each invocation is limited. If the number of paths to be processed exceeds this limit, a continuation token is returned in this response header. When a continuation token is returned in the response, it must be specified in a subsequent invocation of the setAccessControlRecursive operation to continue the setAccessControlRecursive operation on the directory.",
+ "type": "string"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.",
+ "pattern": "^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$",
+ "type": "string"
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "description": "The version of the REST protocol used to process the request.",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/SetAccessControlRecursiveResponse"
+ }
+ },
+ "202": {
+ "description": "The uploaded data was accepted.",
+ "headers": {
+ "Content-MD5": {
+ "description": "An MD5 hash of the request content. This header is only returned for \"Append\" operation. This header is returned so that the client can check for message content integrity. The value of this header is computed by the service; it is not necessarily the same value specified in the request headers.",
+ "type": "string"
+ },
+ "Date": {
+ "description": "A UTC date/time value generated by the service that indicates the time at which the response was initiated.",
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.",
+ "pattern": "^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$",
+ "type": "string"
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "description": "The version of the REST protocol used to process the request.",
+ "type": "string"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "post": {
+ "operationId": "Path_Lease",
+ "summary": "Lease Path",
+ "description": "Create and manage a lease to restrict write and delete access to the path. This operation supports conditional HTTP requests. For more information, see [Specifying Conditional Headers for Blob Service Operations](https://docs.microsoft.com/en-us/rest/api/storageservices/specifying-conditional-headers-for-blob-service-operations).",
+ "tags": [
+ "File and Directory Operations"
+ ],
+ "parameters": [
+ {
+ "name": "x-ms-lease-action",
+ "in": "header",
+ "description": "There are five lease actions: \"acquire\", \"break\", \"change\", \"renew\", and \"release\". Use \"acquire\" and specify the \"x-ms-proposed-lease-id\" and \"x-ms-lease-duration\" to acquire a new lease. Use \"break\" to break an existing lease. When a lease is broken, the lease break period is allowed to elapse, during which time no lease operation except break and release can be performed on the file. When a lease is successfully broken, the response indicates the interval in seconds until a new lease can be acquired. Use \"change\" and specify the current lease ID in \"x-ms-lease-id\" and the new lease ID in \"x-ms-proposed-lease-id\" to change the lease ID of an active lease. Use \"renew\" and specify the \"x-ms-lease-id\" to renew an existing lease. Use \"release\" and specify the \"x-ms-lease-id\" to release a lease.",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "acquire",
+ "break",
+ "change",
+ "renew",
+ "release"
+ ],
+ "x-ms-enum": {
+ "name": "PathLeaseAction",
+ "modelAsString": false
+ }
+ },
+ {
+ "$ref": "#/parameters/LeaseDuration"
+ },
+ {
+ "name": "x-ms-lease-break-period",
+ "in": "header",
+ "description": "The lease break period duration is optional to break a lease, and specifies the break period of the lease in seconds. The lease break duration must be between 0 and 60 seconds.",
+ "format": "int32",
+ "required": false,
+ "type": "integer"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/ProposedLeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The \"renew\", \"change\" or \"release\" action was successful.",
+ "headers": {
+ "Date": {
+ "description": "A UTC date/time value generated by the service that indicates the time at which the response was initiated.",
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "ETag": {
+ "description": "An HTTP entity tag associated with the file.",
+ "type": "string"
+ },
+ "Last-Modified": {
+ "description": "The data and time the file was last modified. Write operations on the file update the last modified time.",
+ "format": "date-time-rfc1123",
+ "type": "string"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.",
+ "pattern": "^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$",
+ "type": "string"
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "description": "The version of the REST protocol used to process the request.",
+ "type": "string"
+ },
+ "x-ms-lease-id": {
+ "x-ms-client-name": "LeaseId",
+ "description": "A successful \"renew\" action returns the lease ID.",
+ "pattern": "^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$",
+ "type": "string"
+ }
+ }
+ },
+ "201": {
+ "description": "A new lease has been created. The \"acquire\" action was successful.",
+ "headers": {
+ "Date": {
+ "description": "A UTC date/time value generated by the service that indicates the time at which the response was initiated.",
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "ETag": {
+ "description": "An HTTP entity tag associated with the file or directory.",
+ "type": "string"
+ },
+ "Last-Modified": {
+ "description": "The data and time the file or directory was last modified. Write operations on the file or directory update the last modified time.",
+ "format": "date-time-rfc1123",
+ "type": "string"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.",
+ "pattern": "^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$",
+ "type": "string"
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "description": "The version of the REST protocol used to process the request.",
+ "type": "string"
+ },
+ "x-ms-lease-id": {
+ "x-ms-client-name": "LeaseId",
+ "description": "A successful \"acquire\" action returns the lease ID.",
+ "pattern": "^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$",
+ "type": "string"
+ }
+ }
+ },
+ "202": {
+ "description": "The \"break\" lease action was successful.",
+ "headers": {
+ "ETag": {
+ "description": "An HTTP entity tag associated with the file or directory.",
+ "type": "string"
+ },
+ "Last-Modified": {
+ "description": "The data and time the file or directory was last modified. Write operations on the file or directory update the last modified time.",
+ "format": "date-time-rfc1123",
+ "type": "string"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.",
+ "pattern": "^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$",
+ "type": "string"
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "description": "The version of the REST protocol used to process the request.",
+ "type": "string"
+ },
+ "x-ms-lease-time": {
+ "x-ms-client-name": "LeaseTime",
+ "description": "The time remaining in the lease period in seconds.",
+ "type": "string"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "get": {
+ "operationId": "Path_Read",
+ "summary": "Read File",
+ "description": "Read the contents of a file. For read operations, range requests are supported. This operation supports conditional HTTP requests. For more information, see [Specifying Conditional Headers for Blob Service Operations](https://docs.microsoft.com/en-us/rest/api/storageservices/specifying-conditional-headers-for-blob-service-operations).",
+ "tags": [
+ "File and Directory Operations"
+ ],
+ "parameters": [
+ {
+ "in": "header",
+ "description": "The HTTP Range request header specifies one or more byte ranges of the resource to be retrieved.",
+ "required": false,
+ "type": "string",
+ "name": "Range"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "name": "x-ms-range-get-content-md5",
+ "in": "header",
+ "description": "Optional. When this header is set to \"true\" and specified together with the Range header, the service returns the MD5 hash for the range, as long as the range is less than or equal to 4MB in size. If this header is specified without the Range header, the service returns status code 400 (Bad Request). If this header is set to true when the range exceeds 4 MB in size, the service returns status code 400 (Bad Request).",
+ "required": false,
+ "type": "boolean"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/EncryptionKey"
+ },
+ {
+ "$ref": "#/parameters/EncryptionKeySha256"
+ },
+ {
+ "$ref": "#/parameters/EncryptionAlgorithm"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Ok",
+ "headers": {
+ "Accept-Ranges": {
+ "description": "Indicates that the service supports requests for partial file content.",
+ "type": "string"
+ },
+ "Cache-Control": {
+ "description": "If the Cache-Control request header has previously been set for the resource, that value is returned in this header.",
+ "type": "string"
+ },
+ "Content-Disposition": {
+ "description": "If the Content-Disposition request header has previously been set for the resource, that value is returned in this header.",
+ "type": "string"
+ },
+ "Content-Encoding": {
+ "description": "If the Content-Encoding request header has previously been set for the resource, that value is returned in this header.",
+ "type": "string"
+ },
+ "Content-Language": {
+ "description": "If the Content-Language request header has previously been set for the resource, that value is returned in this header.",
+ "type": "string"
+ },
+ "Content-Length": {
+ "description": "The size of the resource in bytes.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "Content-Range": {
+ "description": "Indicates the range of bytes returned in the event that the client requested a subset of the file by setting the Range request header.",
+ "type": "string"
+ },
+ "Content-Type": {
+ "description": "The content type specified for the resource. If no content type was specified, the default content type is application/octet-stream.",
+ "type": "string"
+ },
+ "Content-MD5": {
+ "description": "The MD5 hash of complete file. If the file has an MD5 hash and this read operation is to read the complete file, this response header is returned so that the client can check for message content integrity.",
+ "type": "string"
+ },
+ "Date": {
+ "description": "A UTC date/time value generated by the service that indicates the time at which the response was initiated.",
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "ETag": {
+ "description": "An HTTP entity tag associated with the file or directory.",
+ "type": "string"
+ },
+ "Last-Modified": {
+ "description": "The data and time the file or directory was last modified. Write operations on the file or directory update the last modified time.",
+ "format": "date-time-rfc1123",
+ "type": "string"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.",
+ "pattern": "^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$",
+ "type": "string"
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "description": "The version of the REST protocol used to process the request.",
+ "type": "string"
+ },
+ "x-ms-resource-type": {
+ "x-ms-client-name": "ResourceType",
+ "description": "The type of the resource. The value may be \"file\" or \"directory\". If not set, the value is \"file\".",
+ "type": "string"
+ },
+ "x-ms-properties": {
+ "x-ms-client-name": "Properties",
+ "description": "The user-defined properties associated with the file or directory, in the format of a comma-separated list of name and value pairs \"n1=v1, n2=v2, ...\", where each value is a base64 encoded string. Note that the string may only contain ASCII characters in the ISO-8859-1 character set.",
+ "type": "string"
+ },
+ "x-ms-lease-duration": {
+ "x-ms-client-name": "LeaseDuration",
+ "description": "When a resource is leased, specifies whether the lease is of infinite or fixed duration.",
+ "type": "string"
+ },
+ "x-ms-lease-state": {
+ "x-ms-client-name": "LeaseState",
+ "description": "Lease state of the resource.",
+ "type": "string"
+ },
+ "x-ms-lease-status": {
+ "x-ms-client-name": "LeaseStatus",
+ "description": "The lease status of the resource.",
+ "type": "string"
+ },
+ "x-ms-request-server-encrypted": {
+ "x-ms-client-name": "IsServerEncrypted",
+ "type": "boolean",
+ "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise."
+ },
+ "x-ms-encryption-key-sha256": {
+ "x-ms-client-name": "EncryptionKeySha256",
+ "type": "string",
+ "description": "The SHA-256 hash of the encryption key used to encrypt the blob. This header is only returned when the blob was encrypted with a customer-provided key."
+ }
+ },
+ "schema": {
+ "type": "object",
+ "format": "file"
+ }
+ },
+ "206": {
+ "description": "Partial content",
+ "headers": {
+ "Accept-Ranges": {
+ "description": "Indicates that the service supports requests for partial file content.",
+ "type": "string"
+ },
+ "Cache-Control": {
+ "description": "If the Cache-Control request header has previously been set for the resource, that value is returned in this header.",
+ "type": "string"
+ },
+ "Content-Disposition": {
+ "description": "If the Content-Disposition request header has previously been set for the resource, that value is returned in this header.",
+ "type": "string"
+ },
+ "Content-Encoding": {
+ "description": "If the Content-Encoding request header has previously been set for the resource, that value is returned in this header.",
+ "type": "string"
+ },
+ "Content-Language": {
+ "description": "If the Content-Language request header has previously been set for the resource, that value is returned in this header.",
+ "type": "string"
+ },
+ "Content-Length": {
+ "description": "The size of the resource in bytes.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "Content-Range": {
+ "description": "Indicates the range of bytes returned in the event that the client requested a subset of the file by setting the Range request header.",
+ "type": "string"
+ },
+ "Content-Type": {
+ "description": "The content type specified for the resource. If no content type was specified, the default content type is application/octet-stream.",
+ "type": "string"
+ },
+ "Content-MD5": {
+ "description": "The MD5 hash of read range. If the request is to read a specified range and the \"x-ms-range-get-content-md5\" is set to true, then the request returns an MD5 hash for the range, as long as the range size is less than or equal to 4 MB.",
+ "type": "string"
+ },
+ "x-ms-content-md5": {
+ "description": "The MD5 hash of complete file stored in storage. If the file has a MD5 hash, and if request contains range header (Range or x-ms-range), this response header is returned with the value of the complete file's MD5 value. This value may or may not be equal to the value returned in Content-MD5 header, with the latter calculated from the requested range.",
+ "type": "string"
+ },
+ "Date": {
+ "description": "A UTC date/time value generated by the service that indicates the time at which the response was initiated.",
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "ETag": {
+ "description": "An HTTP entity tag associated with the file or directory.",
+ "type": "string"
+ },
+ "Last-Modified": {
+ "description": "The data and time the file or directory was last modified. Write operations on the file or directory update the last modified time.",
+ "format": "date-time-rfc1123",
+ "type": "string"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.",
+ "pattern": "^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$",
+ "type": "string"
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "description": "The version of the REST protocol used to process the request.",
+ "type": "string"
+ },
+ "x-ms-resource-type": {
+ "x-ms-client-name": "ResourceType",
+ "description": "The type of the resource. The value may be \"file\" or \"directory\". If not set, the value is \"file\".",
+ "type": "string"
+ },
+ "x-ms-properties": {
+ "x-ms-client-name": "Properties",
+ "description": "The user-defined properties associated with the file or directory, in the format of a comma-separated list of name and value pairs \"n1=v1, n2=v2, ...\", where each value is a base64 encoded string. Note that the string may only contain ASCII characters in the ISO-8859-1 character set.",
+ "type": "string"
+ },
+ "x-ms-lease-duration": {
+ "x-ms-client-name": "LeaseDuration",
+ "description": "When a resource is leased, specifies whether the lease is of infinite or fixed duration.",
+ "type": "string"
+ },
+ "x-ms-lease-state": {
+ "x-ms-client-name": "LeaseState",
+ "description": "Lease state of the resource. ",
+ "type": "string"
+ },
+ "x-ms-lease-status": {
+ "x-ms-client-name": "LeaseStatus",
+ "description": "The lease status of the resource.",
+ "type": "string"
+ },
+ "x-ms-request-server-encrypted": {
+ "x-ms-client-name": "IsServerEncrypted",
+ "type": "boolean",
+ "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise."
+ },
+ "x-ms-encryption-key-sha256": {
+ "x-ms-client-name": "EncryptionKeySha256",
+ "type": "string",
+ "description": "The SHA-256 hash of the encryption key used to encrypt the blob. This header is only returned when the blob was encrypted with a customer-provided key."
+ }
+ },
+ "schema": {
+ "type": "object",
+ "format": "file"
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "head": {
+ "operationId": "Path_GetProperties",
+ "summary": "Get Properties | Get Status | Get Access Control List",
+ "description": "Get Properties returns all system and user defined properties for a path. Get Status returns all system defined properties for a path. Get Access Control List returns the access control list for a path. This operation supports conditional HTTP requests. For more information, see [Specifying Conditional Headers for Blob Service Operations](https://docs.microsoft.com/en-us/rest/api/storageservices/specifying-conditional-headers-for-blob-service-operations).",
+ "tags": [
+ "File and Directory Operations"
+ ],
+ "parameters": [
+ {
+ "name": "action",
+ "in": "query",
+ "description": "Optional. If the value is \"getStatus\" only the system defined properties for the path are returned. If the value is \"getAccessControl\" the access control list is returned in the response headers (Hierarchical Namespace must be enabled for the account), otherwise the properties are returned.",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "getAccessControl",
+ "getStatus"
+ ],
+ "x-ms-enum": {
+ "name": "PathGetPropertiesAction",
+ "modelAsString": false
+ }
+ },
+ {
+ "$ref": "#/parameters/Upn"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Returns all properties for the file or directory.",
+ "headers": {
+ "Accept-Ranges": {
+ "description": "Indicates that the service supports requests for partial file content.",
+ "type": "string"
+ },
+ "Cache-Control": {
+ "description": "If the Cache-Control request header has previously been set for the resource, that value is returned in this header.",
+ "type": "string"
+ },
+ "Content-Disposition": {
+ "description": "If the Content-Disposition request header has previously been set for the resource, that value is returned in this header.",
+ "type": "string"
+ },
+ "Content-Encoding": {
+ "description": "If the Content-Encoding request header has previously been set for the resource, that value is returned in this header.",
+ "type": "string"
+ },
+ "Content-Language": {
+ "description": "If the Content-Language request header has previously been set for the resource, that value is returned in this header.",
+ "type": "string"
+ },
+ "Content-Length": {
+ "description": "The size of the resource in bytes.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "Content-Range": {
+ "description": "Indicates the range of bytes returned in the event that the client requested a subset of the file by setting the Range request header.",
+ "type": "string"
+ },
+ "Content-Type": {
+ "description": "The content type specified for the resource. If no content type was specified, the default content type is application/octet-stream.",
+ "type": "string"
+ },
+ "Content-MD5": {
+ "description": "The MD5 hash of complete file stored in storage. This header is returned only for \"GetProperties\" operation. If the Content-MD5 header has been set for the file, this response header is returned for GetProperties call so that the client can check for message content integrity.",
+ "type": "string"
+ },
+ "Date": {
+ "description": "A UTC date/time value generated by the service that indicates the time at which the response was initiated.",
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "ETag": {
+ "description": "An HTTP entity tag associated with the file or directory.",
+ "type": "string"
+ },
+ "Last-Modified": {
+ "description": "The data and time the file or directory was last modified. Write operations on the file or directory update the last modified time.",
+ "format": "date-time-rfc1123",
+ "type": "string"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.",
+ "pattern": "^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$",
+ "type": "string"
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "description": "The version of the REST protocol used to process the request.",
+ "type": "string"
+ },
+ "x-ms-resource-type": {
+ "x-ms-client-name": "ResourceType",
+ "description": "The type of the resource. The value may be \"file\" or \"directory\". If not set, the value is \"file\".",
+ "type": "string"
+ },
+ "x-ms-properties": {
+ "x-ms-client-name": "Properties",
+ "description": "The user-defined properties associated with the file or directory, in the format of a comma-separated list of name and value pairs \"n1=v1, n2=v2, ...\", where each value is a base64 encoded string. Note that the string may only contain ASCII characters in the ISO-8859-1 character set.",
+ "type": "string"
+ },
+ "x-ms-owner": {
+ "x-ms-client-name": "Owner",
+ "description": "The owner of the file or directory. Included in the response if Hierarchical Namespace is enabled for the account.",
+ "type": "string"
+ },
+ "x-ms-group": {
+ "x-ms-client-name": "Group",
+ "description": "The owning group of the file or directory. Included in the response if Hierarchical Namespace is enabled for the account.",
+ "type": "string"
+ },
+ "x-ms-permissions": {
+ "x-ms-client-name": "Permissions",
+ "description": "The POSIX access permissions for the file owner, the file owning group, and others. Included in the response if Hierarchical Namespace is enabled for the account.",
+ "type": "string"
+ },
+ "x-ms-acl": {
+ "x-ms-client-name": "ACL",
+ "description": "The POSIX access control list for the file or directory. Included in the response only if the action is \"getAccessControl\" and Hierarchical Namespace is enabled for the account.",
+ "type": "string"
+ },
+ "x-ms-lease-duration": {
+ "x-ms-client-name": "LeaseDuration",
+ "description": "When a resource is leased, specifies whether the lease is of infinite or fixed duration.",
+ "type": "string"
+ },
+ "x-ms-lease-state": {
+ "x-ms-client-name": "LeaseState",
+ "description": "Lease state of the resource.",
+ "type": "string"
+ },
+ "x-ms-lease-status": {
+ "x-ms-client-name": "LeaseStatus",
+ "description": "The lease status of the resource.",
+ "type": "string"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "delete": {
+ "operationId": "Path_Delete",
+ "summary": "Delete File | Delete Directory",
+ "description": "Delete the file or directory. This operation supports conditional HTTP requests. For more information, see [Specifying Conditional Headers for Blob Service Operations](https://docs.microsoft.com/en-us/rest/api/storageservices/specifying-conditional-headers-for-blob-service-operations).",
+ "tags": [
+ "File and Directory Operations"
+ ],
+ "parameters": [
+ {
+ "$ref": "#/parameters/RecursiveOptional"
+ },
+ {
+ "$ref": "#/parameters/Continuation"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/Paginated"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The file was deleted.",
+ "headers": {
+ "Date": {
+ "description": "A UTC date/time value generated by the service that indicates the time at which the response was initiated.",
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.",
+ "pattern": "^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$",
+ "type": "string"
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "description": "The version of the REST protocol used to process the request.",
+ "type": "string"
+ },
+ "x-ms-continuation": {
+ "x-ms-client-name": "Continuation",
+ "description": "When deleting a directory, the number of paths that are deleted with each invocation is limited. If the number of paths to be deleted exceeds this limit, a continuation token is returned in this response header. When a continuation token is returned in the response, it must be specified in a subsequent invocation of the delete operation to continue deleting the directory.",
+ "type": "string"
+ },
+ "x-ms-deletion-id": {
+ "x-ms-client-name": "DeletionId",
+ "description": "Returned only for hierarchical namespace space enabled accounts when soft delete is enabled. A unique identifier for the entity that can be used to restore it. See the Undelete REST API for more information.",
+ "type": "string"
+ }
+ }
+ },
+ "202": {
+ "description": "Delete request is accepted, applicable only when Hierarchical Namespace is enabled for the account.",
+ "headers": {
+ "Date": {
+ "description": "A UTC date/time value generated by the service that indicates the time at which the response was initiated.",
+ "type": "string"
+ },
+ "x-ms-request-id": {
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.",
+ "pattern": "^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$",
+ "type": "string"
+ },
+ "x-ms-version": {
+ "description": "The version of the REST protocol used to process the request.",
+ "type": "string"
+ },
+ "x-ms-continuation": {
+ "description": "Applicable only when Hierarchical Namespace is enabled for the account. When deleting a directory, the number of paths that are deleted with each invocation is limited. If the number of paths to be deleted exceeds this limit, a continuation token is returned in this response when the following conditions are met: Delete should be on a directory with query parameters \"recursive\" and \"paginated\" set to true, the identity of the user calling the api should be a non-super user using ACL based authorization, number of paths to be deleted exceeds a limit, request version is 2023-08-03 and later. When a continuation token is returned in the response, it must be specified in a subsequent invocation of the delete operation to continue deleting the directory. Directory is successfully deleted when the continuation token returned is empty. The actual directory deletion happens only in the last invocation, the previous ones involve ACL checks in the server of the files and directories under the directory to be recursively deleted.",
+ "type": "string"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "$ref": "#/parameters/FileSystem"
+ },
+ {
+ "$ref": "#/parameters/Path"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ }
+ ]
+ },
+ "/{filesystem}/{path}?action=setAccessControl": {
+ "patch": {
+ "tags": [
+ "directory"
+ ],
+ "operationId": "Path_SetAccessControl",
+ "description": "Set the owner, group, permissions, or access control list for a path.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/Owner"
+ },
+ {
+ "$ref": "#/parameters/Group"
+ },
+ {
+ "$ref": "#/parameters/Permissions"
+ },
+ {
+ "$ref": "#/parameters/Acl"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Set directory access control response.",
+ "headers": {
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "A UTC date/time value generated by the service that indicates the time at which the response was initiated."
+ },
+ "ETag": {
+ "type": "string",
+ "description": "An HTTP entity tag associated with the file or directory."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "The data and time the file or directory was last modified. Write operations on the file or directory update the last modified time."
+ },
+ "x-ms-client-request-id": {
+ "x-ms-client-name": "ClientRequestId",
+ "type": "string",
+ "description": "If a client request id header is sent in the request, this header will be present in the response with the same value."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "The version of the REST protocol used to process the request."
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-client-request-id": {
+ "x-ms-client-name": "ClientRequestId",
+ "type": "string",
+ "description": "If a client request id header is sent in the request, this header will be present in the response with the same value."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "The version of the REST protocol used to process the request."
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "$ref": "#/parameters/FileSystem"
+ },
+ {
+ "$ref": "#/parameters/Path"
+ },
+ {
+ "name": "action",
+ "description": "action",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "setAccessControl"
+ ]
+ }
+ ]
+ },
+ "/{filesystem}/{path}?action=setAccessControlRecursive": {
+ "patch": {
+ "tags": [
+ "directory"
+ ],
+ "operationId": "Path_SetAccessControlRecursive",
+ "description": "Set the access control list for a path and sub-paths.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/Continuation"
+ },
+ {
+ "$ref": "#/parameters/PathSetAccessControlRecursiveMode"
+ },
+ {
+ "$ref": "#/parameters/ForceFlag"
+ },
+ {
+ "name": "maxRecords",
+ "in": "query",
+ "description": "Optional. It specifies the maximum number of files or directories on which the acl change will be applied. If omitted or greater than 2,000, the request will process up to 2,000 items",
+ "format": "int32",
+ "minimum": 1,
+ "required": false,
+ "type": "integer"
+ },
+ {
+ "$ref": "#/parameters/Acl"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Set directory access control recursive response.",
+ "headers": {
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "A UTC date/time value generated by the service that indicates the time at which the response was initiated."
+ },
+ "x-ms-client-request-id": {
+ "x-ms-client-name": "ClientRequestId",
+ "type": "string",
+ "description": "If a client request id header is sent in the request, this header will be present in the response with the same value."
+ },
+ "x-ms-continuation": {
+ "x-ms-client-name": "Continuation",
+ "description": "When performing setAccessControlRecursive on a directory, the number of paths that are processed with each invocation is limited. If the number of paths to be processed exceeds this limit, a continuation token is returned in this response header. When a continuation token is returned in the response, it must be specified in a subsequent invocation of the setAccessControlRecursive operation to continue the setAccessControlRecursive operation on the directory.",
+ "type": "string"
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "The version of the REST protocol used to process the request."
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/SetAccessControlRecursiveResponse"
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-client-request-id": {
+ "x-ms-client-name": "ClientRequestId",
+ "type": "string",
+ "description": "If a client request id header is sent in the request, this header will be present in the response with the same value."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "The version of the REST protocol used to process the request."
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "$ref": "#/parameters/FileSystem"
+ },
+ {
+ "$ref": "#/parameters/Path"
+ },
+ {
+ "name": "action",
+ "description": "action",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "setAccessControlRecursive"
+ ]
+ }
+ ]
+ },
+ "/{filesystem}/{path}?action=flush": {
+ "patch": {
+ "tags": [
+ "directory"
+ ],
+ "operationId": "Path_FlushData",
+ "description": "Set the owner, group, permissions, or access control list for a path.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/Position"
+ },
+ {
+ "$ref": "#/parameters/RetainUncommittedData"
+ },
+ {
+ "$ref": "#/parameters/Close"
+ },
+ {
+ "$ref": "#/parameters/ContentLength"
+ },
+ {
+ "$ref": "#/parameters/ContentMD5"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/LeaseAction"
+ },
+ {
+ "$ref": "#/parameters/LeaseDurationMethod"
+ },
+ {
+ "$ref": "#/parameters/ProposedLeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/CacheControl"
+ },
+ {
+ "$ref": "#/parameters/ContentType"
+ },
+ {
+ "$ref": "#/parameters/ContentDisposition"
+ },
+ {
+ "$ref": "#/parameters/ContentEncoding"
+ },
+ {
+ "$ref": "#/parameters/ContentLanguage"
+ },
+ {
+ "$ref": "#/parameters/IfMatch"
+ },
+ {
+ "$ref": "#/parameters/IfNoneMatch"
+ },
+ {
+ "$ref": "#/parameters/IfModifiedSince"
+ },
+ {
+ "$ref": "#/parameters/IfUnmodifiedSince"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/EncryptionKey"
+ },
+ {
+ "$ref": "#/parameters/EncryptionKeySha256"
+ },
+ {
+ "$ref": "#/parameters/EncryptionAlgorithm"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The data was flushed (written) to the file successfully.",
+ "headers": {
+ "Date": {
+ "description": "A UTC date/time value generated by the service that indicates the time at which the response was initiated.",
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "ETag": {
+ "description": "An HTTP entity tag associated with the file or directory.",
+ "type": "string"
+ },
+ "Last-Modified": {
+ "description": "The data and time the file or directory was last modified. Write operations on the file or directory update the last modified time.",
+ "format": "date-time-rfc1123",
+ "type": "string"
+ },
+ "Content-Length": {
+ "description": "The size of the resource in bytes.",
+ "type": "integer",
+ "format": "int64"
+ },
+ "x-ms-client-request-id": {
+ "x-ms-client-name": "ClientRequestId",
+ "type": "string",
+ "description": "If a client request id header is sent in the request, this header will be present in the response with the same value."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation.",
+ "pattern": "^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$",
+ "type": "string"
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "description": "The version of the REST protocol used to process the request.",
+ "type": "string"
+ },
+ "x-ms-request-server-encrypted": {
+ "x-ms-client-name": "IsServerEncrypted",
+ "type": "boolean",
+ "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise."
+ },
+ "x-ms-encryption-key-sha256": {
+ "x-ms-client-name": "EncryptionKeySha256",
+ "type": "string",
+ "description": "The SHA-256 hash of the encryption key used to encrypt the blob. This header is only returned when the blob was encrypted with a customer-provided key."
+ },
+ "x-ms-lease-renewed": {
+ "x-ms-client-name": "LeaseRenewed",
+ "type": "boolean",
+ "description": "If the lease was auto-renewed with this request"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-client-request-id": {
+ "x-ms-client-name": "ClientRequestId",
+ "type": "string",
+ "description": "If a client request id header is sent in the request, this header will be present in the response with the same value."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "The version of the REST protocol used to process the request."
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "$ref": "#/parameters/FileSystem"
+ },
+ {
+ "$ref": "#/parameters/Path"
+ },
+ {
+ "name": "action",
+ "description": "action",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "flush"
+ ]
+ }
+ ]
+ },
+ "/{filesystem}/{path}?action=append": {
+ "patch": {
+ "tags": [
+ "directory"
+ ],
+ "operationId": "Path_AppendData",
+ "description": "Append data to the file.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Position"
+ },
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/ContentLength"
+ },
+ {
+ "$ref": "#/parameters/TransactionalContentMD5"
+ },
+ {
+ "$ref": "#/parameters/ContentCrc64"
+ },
+ {
+ "$ref": "#/parameters/LeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/LeaseAction"
+ },
+ {
+ "$ref": "#/parameters/LeaseDurationMethod"
+ },
+ {
+ "$ref": "#/parameters/ProposedLeaseIdOptional"
+ },
+ {
+ "$ref": "#/parameters/Body"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/EncryptionKey"
+ },
+ {
+ "$ref": "#/parameters/EncryptionKeySha256"
+ },
+ {
+ "$ref": "#/parameters/EncryptionAlgorithm"
+ },
+ {
+ "$ref": "#/parameters/Flush"
+ }
+ ],
+ "responses": {
+ "202": {
+ "description": "Append data to file control response.",
+ "headers": {
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "A UTC date/time value generated by the service that indicates the time at which the response was initiated."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation."
+ },
+ "x-ms-client-request-id": {
+ "x-ms-client-name": "ClientRequestId",
+ "type": "string",
+ "description": "If a client request id header is sent in the request, this header will be present in the response with the same value."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "The version of the REST protocol used to process the request."
+ },
+ "ETag": {
+ "description": "An HTTP entity tag associated with the file or directory.",
+ "type": "string"
+ },
+ "Content-MD5": {
+ "type": "string",
+ "format": "byte",
+ "description": "If the blob has an MD5 hash and this operation is to read the full blob, this response header is returned so that the client can check for message content integrity."
+ },
+ "x-ms-content-crc64": {
+ "type": "string",
+ "format": "byte",
+ "description": "This header is returned so that the client can check for message content integrity. The value of this header is computed by the Blob service; it is not necessarily the same value specified in the request headers."
+ },
+ "x-ms-request-server-encrypted": {
+ "x-ms-client-name": "IsServerEncrypted",
+ "type": "boolean",
+ "description": "The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise."
+ },
+ "x-ms-encryption-key-sha256": {
+ "x-ms-client-name": "EncryptionKeySha256",
+ "type": "string",
+ "description": "The SHA-256 hash of the encryption key used to encrypt the blob. This header is only returned when the blob was encrypted with a customer-provided key."
+ },
+ "x-ms-lease-renewed": {
+ "x-ms-client-name": "LeaseRenewed",
+ "type": "boolean",
+ "description": "If the lease was auto-renewed with this request"
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-client-request-id": {
+ "x-ms-client-name": "ClientRequestId",
+ "type": "string",
+ "description": "If a client request id header is sent in the request, this header will be present in the response with the same value."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "A server-generated UUID recorded in the analytics logs for troubleshooting and correlation."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "The version of the REST protocol used to process the request."
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "$ref": "#/parameters/FileSystem"
+ },
+ {
+ "$ref": "#/parameters/Path"
+ },
+ {
+ "name": "action",
+ "description": "action",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "append"
+ ]
+ }
+ ]
+ },
+ "/{filesystem}/{path}?comp=expiry": {
+ "put": {
+ "tags": [
+ "blob"
+ ],
+ "operationId": "Path_SetExpiry",
+ "description": "Sets the time a blob will expire and be deleted.",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ },
+ {
+ "$ref": "#/parameters/PathExpiryOptions"
+ },
+ {
+ "$ref": "#/parameters/PathExpiryTime"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The blob expiry was set successfully.",
+ "headers": {
+ "ETag": {
+ "type": "string",
+ "description": "The ETag contains a value that you can use to perform operations conditionally. If the request version is 2011-08-18 or newer, the ETag value will be in quotes."
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "Returns the date and time the container was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob."
+ },
+ "x-ms-client-request-id": {
+ "x-ms-client-name": "ClientRequestId",
+ "type": "string",
+ "description": "If a client request id header is sent in the request, this header will be present in the response with the same value."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated."
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "$ref": "#/parameters/FileSystem"
+ },
+ {
+ "$ref": "#/parameters/Path"
+ },
+ {
+ "name": "comp",
+ "description": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "expiry"
+ ]
+ }
+ ]
+ },
+ "/{filesystem}/{path}?comp=undelete": {
+ "put": {
+ "tags": [
+ "blob"
+ ],
+ "operationId": "Path_Undelete",
+ "description": "Undelete a path that was previously soft deleted",
+ "parameters": [
+ {
+ "$ref": "#/parameters/Timeout"
+ },
+ {
+ "$ref": "#/parameters/UndeleteSource"
+ },
+ {
+ "$ref": "#/parameters/ApiVersionParameter"
+ },
+ {
+ "$ref": "#/parameters/ClientRequestId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The blob was undeleted successfully.",
+ "headers": {
+ "x-ms-client-request-id": {
+ "x-ms-client-name": "ClientRequestId",
+ "type": "string",
+ "description": "If a client request id header is sent in the request, this header will be present in the response with the same value."
+ },
+ "x-ms-request-id": {
+ "x-ms-client-name": "RequestId",
+ "type": "string",
+ "description": "This header uniquely identifies the request that was made and can be used for troubleshooting the request."
+ },
+ "x-ms-resource-type": {
+ "x-ms-client-name": "ResourceType",
+ "description": "The type of the resource. The value may be \"file\" or \"directory\". If not set, the value is \"file\".",
+ "type": "string"
+ },
+ "x-ms-version": {
+ "x-ms-client-name": "Version",
+ "type": "string",
+ "description": "Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above."
+ },
+ "Date": {
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "description": "UTC date/time value generated by the service that indicates the time at which the response was initiated."
+ }
+ }
+ },
+ "default": {
+ "description": "Failure",
+ "headers": {
+ "x-ms-error-code": {
+ "x-ms-client-name": "ErrorCode",
+ "type": "string"
+ }
+ },
+ "schema": {
+ "$ref": "#/definitions/StorageError"
+ }
+ }
+ }
+ },
+ "parameters": [
+ {
+ "$ref": "#/parameters/FileSystem"
+ },
+ {
+ "$ref": "#/parameters/Path"
+ },
+ {
+ "name": "comp",
+ "description": "comp",
+ "in": "query",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "undelete"
+ ]
+ }
+ ]
+ }
+ },
+ "parameters": {
+ "Url": {
+ "name": "url",
+ "description": "The URL of the service account, container, or blob that is the target of the desired operation.",
+ "required": true,
+ "x-ms-parameter-location": "client",
+ "type": "string",
+ "in": "path",
+ "x-ms-skip-url-encoding": true
+ },
+ "FileSystemResource": {
+ "name": "resource",
+ "in": "query",
+ "x-ms-parameter-location": "client",
+ "description": "The value must be \"filesystem\" for all filesystem operations.",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "filesystem"
+ ],
+ "x-ms-enum": {
+ "name": "FileSystemResourceType",
+ "modelAsString": false
+ }
+ },
+ "ApiVersionParameter": {
+ "name": "x-ms-version",
+ "x-ms-parameter-location": "client",
+ "x-ms-client-name": "version",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "description": "Specifies the version of the operation to use for this request.",
+ "enum": [
+ "2023-05-03"
+ ]
+ },
+ "accountName": {
+ "description": "The Azure Storage account name.",
+ "in": "path",
+ "name": "accountName",
+ "required": true,
+ "type": "string",
+ "x-ms-skip-url-encoding": true,
+ "x-ms-parameter-location": "method"
+ },
+ "dnsSuffix": {
+ "default": "dfs.core.windows.net",
+ "description": "The DNS suffix for the Azure Data Lake Storage endpoint.",
+ "in": "path",
+ "name": "dnsSuffix",
+ "required": true,
+ "type": "string",
+ "x-ms-skip-url-encoding": true,
+ "x-ms-parameter-location": "method"
+ },
+ "ClientRequestId": {
+ "name": "x-ms-client-request-id",
+ "x-ms-client-name": "requestId",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "description": "Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled."
+ },
+ "Timeout": {
+ "name": "timeout",
+ "in": "query",
+ "required": false,
+ "type": "integer",
+ "minimum": 0,
+ "x-ms-parameter-location": "method",
+ "description": "The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations."
+ },
+ "IfMatch": {
+ "name": "If-Match",
+ "x-ms-client-name": "ifMatch",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "modified-access-conditions"
+ },
+ "description": "Specify an ETag value to operate only on blobs with a matching value."
+ },
+ "IfModifiedSince": {
+ "name": "If-Modified-Since",
+ "x-ms-client-name": "ifModifiedSince",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "modified-access-conditions"
+ },
+ "description": "Specify this header value to operate only on a blob if it has been modified since the specified date/time."
+ },
+ "IfNoneMatch": {
+ "name": "If-None-Match",
+ "x-ms-client-name": "ifNoneMatch",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "modified-access-conditions"
+ },
+ "description": "Specify an ETag value to operate only on blobs without a matching value."
+ },
+ "IfUnmodifiedSince": {
+ "name": "If-Unmodified-Since",
+ "x-ms-client-name": "ifUnmodifiedSince",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "modified-access-conditions"
+ },
+ "description": "Specify this header value to operate only on a blob if it has not been modified since the specified date/time."
+ },
+ "RecursiveOptional": {
+ "name": "recursive",
+ "x-ms-parameter-location": "method",
+ "in": "query",
+ "description": "Required",
+ "required": false,
+ "type": "boolean"
+ },
+ "RecursiveRequired": {
+ "name": "recursive",
+ "x-ms-parameter-location": "method",
+ "in": "query",
+ "description": "Required",
+ "required": true,
+ "type": "boolean"
+ },
+ "Continuation": {
+ "name": "continuation",
+ "x-ms-parameter-location": "method",
+ "in": "query",
+ "description": "Optional. When deleting a directory, the number of paths that are deleted with each invocation is limited. If the number of paths to be deleted exceeds this limit, a continuation token is returned in this response header. When a continuation token is returned in the response, it must be specified in a subsequent invocation of the delete operation to continue deleting the directory.",
+ "required": false,
+ "type": "string"
+ },
+ "PathSetAccessControlRecursiveMode": {
+ "name": "mode",
+ "in": "query",
+ "x-ms-parameter-location": "method",
+ "description": "Mode \"set\" sets POSIX access control rights on files and directories, \"modify\" modifies one or more POSIX access control rights that pre-exist on files and directories, \"remove\" removes one or more POSIX access control rights that were present earlier on files and directories",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "set",
+ "modify",
+ "remove"
+ ],
+ "x-ms-enum": {
+ "name": "PathSetAccessControlRecursiveMode",
+ "modelAsString": false
+ }
+ },
+ "ForceFlag": {
+ "name": "forceFlag",
+ "x-ms-parameter-location": "method",
+ "in": "query",
+ "description": "Optional. Valid for \"SetAccessControlRecursive\" operation. If set to false, the operation will terminate quickly on encountering user errors (4XX). If true, the operation will ignore user errors and proceed with the operation on other sub-entities of the directory. Continuation token will only be returned when forceFlag is true in case of user errors. If not set the default value is false for this.",
+ "required": false,
+ "type": "boolean"
+ },
+ "Directory": {
+ "name": "directory",
+ "x-ms-client-name": "Path",
+ "x-ms-parameter-location": "method",
+ "in": "query",
+ "description": "Optional. Filters results to paths within the specified directory. An error occurs if the directory does not exist.",
+ "required": false,
+ "type": "string"
+ },
+ "LeaseIdOptional": {
+ "name": "x-ms-lease-id",
+ "x-ms-client-name": "leaseId",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "lease-access-conditions"
+ },
+ "description": "If specified, the operation only succeeds if the resource's lease is active and matches this ID."
+ },
+ "LeaseIdRequired": {
+ "name": "x-ms-lease-id",
+ "x-ms-client-name": "leaseId",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "description": "Specifies the current lease ID on the resource."
+ },
+ "ProposedLeaseIdOptional": {
+ "name": "x-ms-proposed-lease-id",
+ "x-ms-client-name": "proposedLeaseId",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "description": "Proposed lease ID, in a GUID string format. The Blob service returns 400 (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor (String) for a list of valid GUID string formats."
+ },
+ "LeaseDuration": {
+ "name": "x-ms-lease-duration",
+ "in": "header",
+ "description": "The lease duration is required to acquire a lease, and specifies the duration of the lease in seconds. The lease duration must be between 15 and 60 seconds or -1 for infinite lease.",
+ "format": "int32",
+ "required": false,
+ "type": "integer",
+ "x-ms-parameter-location": "client"
+ },
+ "LeaseDurationMethod": {
+ "name": "x-ms-lease-duration",
+ "x-ms-client-name": "leaseDuration",
+ "in": "header",
+ "description": "The lease duration is required to acquire a lease, and specifies the duration of the lease in seconds. The lease duration must be between 15 and 60 seconds or -1 for infinite lease.",
+ "format": "int64",
+ "required": false,
+ "type": "integer",
+ "x-ms-parameter-location": "method"
+ },
+ "LeaseAction": {
+ "name": "x-ms-lease-action",
+ "x-ms-client-name": "leaseAction",
+ "in": "header",
+ "x-ms-parameter-location": "method",
+ "description": "Optional. If \"acquire\" it will acquire the lease. If \"auto-renew\" it will renew the lease. If \"release\" it will release the lease only on flush. If \"acquire-release\" it will acquire & complete the operation & release the lease once operation is done.",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "acquire",
+ "auto-renew",
+ "release",
+ "acquire-release"
+ ],
+ "x-ms-enum": {
+ "name": "LeaseAction",
+ "modelAsString": false
+ }
+ },
+ "Prefix": {
+ "name": "prefix",
+ "in": "query",
+ "description": "Filters results to filesystems within the specified prefix.",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method"
+ },
+ "MaxResults": {
+ "name": "maxResults",
+ "in": "query",
+ "description": "An optional value that specifies the maximum number of items to return. If omitted or greater than 5,000, the response will include up to 5,000 items.",
+ "format": "int32",
+ "minimum": 1,
+ "required": false,
+ "type": "integer",
+ "x-ms-parameter-location": "method"
+ },
+ "Properties": {
+ "name": "x-ms-properties",
+ "x-ms-client-name": "properties",
+ "description": "Optional. User-defined properties to be stored with the filesystem, in the format of a comma-separated list of name and value pairs \"n1=v1, n2=v2, ...\", where each value is a base64 encoded string. Note that the string may only contain ASCII characters in the ISO-8859-1 character set. If the filesystem exists, any properties not included in the list will be removed. All properties are removed if the header is omitted. To merge new and existing properties, first get all existing properties and the current E-Tag, then make a conditional request with the E-Tag and include values for all properties.",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method"
+ },
+ "SourceIfMatch": {
+ "name": "x-ms-source-if-match",
+ "x-ms-client-name": "sourceIfMatch",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "source-modified-access-conditions"
+ },
+ "description": "Specify an ETag value to operate only on blobs with a matching value."
+ },
+ "SourceIfModifiedSince": {
+ "name": "x-ms-source-if-modified-since",
+ "x-ms-client-name": "sourceIfModifiedSince",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "source-modified-access-conditions"
+ },
+ "description": "Specify this header value to operate only on a blob if it has been modified since the specified date/time."
+ },
+ "SourceIfNoneMatch": {
+ "name": "x-ms-source-if-none-match",
+ "x-ms-client-name": "sourceIfNoneMatch",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "source-modified-access-conditions"
+ },
+ "description": "Specify an ETag value to operate only on blobs without a matching value."
+ },
+ "SourceIfUnmodifiedSince": {
+ "name": "x-ms-source-if-unmodified-since",
+ "x-ms-client-name": "sourceIfUnmodifiedSince",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "format": "date-time-rfc1123",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "source-modified-access-conditions"
+ },
+ "description": "Specify this header value to operate only on a blob if it has not been modified since the specified date/time."
+ },
+ "SourceLeaseId": {
+ "name": "x-ms-source-lease-id",
+ "x-ms-client-name": "sourceLeaseId",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "description": "A lease ID for the source path. If specified, the source path must have an active lease and the lease ID must match."
+ },
+ "FileSystem": {
+ "name": "filesystem",
+ "x-ms-parameter-location": "client",
+ "x-ms-client-name": "fileSystem",
+ "in": "path",
+ "description": "The filesystem identifier.",
+ "pattern": "^[$a-z0-9](?!.*--)[-a-z0-9]{1,61}[a-z0-9]$",
+ "minLength": 3,
+ "maxLength": 63,
+ "required": true,
+ "type": "string"
+ },
+ "Path": {
+ "name": "path",
+ "x-ms-parameter-location": "client",
+ "in": "path",
+ "description": "The file or directory path.",
+ "required": true,
+ "type": "string"
+ },
+ "CacheControl": {
+ "name": "x-ms-cache-control",
+ "x-ms-client-name": "cacheControl",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "path-HTTP-headers"
+ },
+ "description": "Optional. Sets the blob's cache control. If specified, this property is stored with the blob and returned with a read request."
+ },
+ "ContentDisposition": {
+ "name": "x-ms-content-disposition",
+ "x-ms-client-name": "contentDisposition",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "path-HTTP-headers"
+ },
+ "description": "Optional. Sets the blob's Content-Disposition header."
+ },
+ "ContentEncoding": {
+ "name": "x-ms-content-encoding",
+ "x-ms-client-name": "contentEncoding",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "path-HTTP-headers"
+ },
+ "description": "Optional. Sets the blob's content encoding. If specified, this property is stored with the blob and returned with a read request."
+ },
+ "ContentLanguage": {
+ "name": "x-ms-content-language",
+ "x-ms-client-name": "contentLanguage",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "path-HTTP-headers"
+ },
+ "description": "Optional. Set the blob's content language. If specified, this property is stored with the blob and returned with a read request."
+ },
+ "ContentType": {
+ "name": "x-ms-content-type",
+ "x-ms-client-name": "contentType",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "path-HTTP-headers"
+ },
+ "description": "Optional. Sets the blob's content type. If specified, this property is stored with the blob and returned with a read request."
+ },
+ "TransactionalContentMD5": {
+ "name": "Content-MD5",
+ "x-ms-client-name": "transactionalContentHash",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "format": "byte",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "path-HTTP-headers"
+ },
+ "description": "Specify the transactional md5 for the body, to be validated by the service."
+ },
+ "ContentMD5": {
+ "name": "x-ms-content-md5",
+ "x-ms-client-name": "contentMD5",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "format": "byte",
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "path-HTTP-headers"
+ },
+ "description": "Specify the transactional md5 for the body, to be validated by the service."
+ },
+ "ContentCrc64": {
+ "name": "x-ms-content-crc64",
+ "x-ms-client-name": "transactionalContentCrc64",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "format": "byte",
+ "x-ms-parameter-location": "method",
+ "description": "Specify the transactional crc64 for the body, to be validated by the service."
+ },
+ "Umask": {
+ "name": "x-ms-umask",
+ "x-ms-client-name": "umask",
+ "description": "Optional and only valid if Hierarchical Namespace is enabled for the account. When creating a file or directory and the parent folder does not have a default ACL, the umask restricts the permissions of the file or directory to be created. The resulting permission is given by p bitwise and not u, where p is the permission and u is the umask. For example, if p is 0777 and u is 0057, then the resulting permission is 0720. The default permission is 0777 for a directory and 0666 for a file. The default umask is 0027. The umask must be specified in 4-digit octal notation (e.g. 0766).",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method"
+ },
+ "Permissions": {
+ "name": "x-ms-permissions",
+ "x-ms-client-name": "permissions",
+ "description": "Optional and only valid if Hierarchical Namespace is enabled for the account. Sets POSIX access permissions for the file owner, the file owning group, and others. Each class may be granted read, write, or execute permission. The sticky bit is also supported. Both symbolic (rwxrw-rw-) and 4-digit octal notation (e.g. 0766) are supported.",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method"
+ },
+ "RenameSource": {
+ "name": "x-ms-rename-source",
+ "x-ms-client-name": "renameSource",
+ "in": "header",
+ "description": "An optional file or directory to be renamed. The value must have the following format: \"/{filesystem}/{path}\". If \"x-ms-properties\" is specified, the properties will overwrite the existing properties; otherwise, the existing properties will be preserved. This value must be a URL percent-encoded string. Note that the string may only contain ASCII characters in the ISO-8859-1 character set.",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method"
+ },
+ "Owner": {
+ "name": "x-ms-owner",
+ "x-ms-client-name": "owner",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "Optional. The owner of the blob or directory.",
+ "x-ms-parameter-location": "method"
+ },
+ "Group": {
+ "name": "x-ms-group",
+ "x-ms-client-name": "group",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "Optional. The owning group of the blob or directory.",
+ "x-ms-parameter-location": "method"
+ },
+ "Acl": {
+ "name": "x-ms-acl",
+ "description": "Sets POSIX access control rights on files and directories. The value is a comma-separated list of access control entries. Each access control entry (ACE) consists of a scope, a type, a user or group identifier, and permissions in the format \"[scope:][type]:[id]:[permissions]\".",
+ "x-ms-client-name": "acl",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method"
+ },
+ "Body": {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "type": "object",
+ "format": "file"
+ },
+ "x-ms-parameter-location": "method",
+ "description": "Initial data"
+ },
+ "Upn": {
+ "name": "upn",
+ "in": "query",
+ "description": "Optional. Valid only when Hierarchical Namespace is enabled for the account. If \"true\", the user identity values returned in the x-ms-owner, x-ms-group, and x-ms-acl response headers will be transformed from Azure Active Directory Object IDs to User Principal Names. If \"false\", the values will be returned as Azure Active Directory Object IDs. The default value is false. Note that group and application Object IDs are not translated because they do not have unique friendly names.",
+ "required": false,
+ "type": "boolean",
+ "x-ms-parameter-location": "method"
+ },
+ "Position": {
+ "name": "position",
+ "in": "query",
+ "description": "This parameter allows the caller to upload data in parallel and control the order in which it is appended to the file. It is required when uploading data to be appended to the file and when flushing previously uploaded data to the file. The value must be the position where the data is to be appended. Uploaded data is not immediately flushed, or written, to the file. To flush, the previously uploaded data must be contiguous, the position parameter must be specified and equal to the length of the file after all data has been written, and there must not be a request entity body included with the request.",
+ "format": "int64",
+ "required": false,
+ "type": "integer",
+ "x-ms-parameter-location": "method"
+ },
+ "RetainUncommittedData": {
+ "name": "retainUncommittedData",
+ "in": "query",
+ "description": "Valid only for flush operations. If \"true\", uncommitted data is retained after the flush operation completes; otherwise, the uncommitted data is deleted after the flush operation. The default is false. Data at offsets less than the specified position are written to the file when flush succeeds, but this optional parameter allows data after the flush position to be retained for a future flush operation.",
+ "required": false,
+ "type": "boolean",
+ "x-ms-parameter-location": "method"
+ },
+ "Close": {
+ "name": "close",
+ "in": "query",
+ "description": "Azure Storage Events allow applications to receive notifications when files change. When Azure Storage Events are enabled, a file changed event is raised. This event has a property indicating whether this is the final change to distinguish the difference between an intermediate flush to a file stream and the final close of a file stream. The close query parameter is valid only when the action is \"flush\" and change notifications are enabled. If the value of close is \"true\" and the flush operation completes successfully, the service raises a file change notification with a property indicating that this is the final update (the file stream has been closed). If \"false\" a change notification is raised indicating the file has changed. The default is false. This query parameter is set to true by the Hadoop ABFS driver to indicate that the file stream has been closed.\"",
+ "required": false,
+ "type": "boolean",
+ "x-ms-parameter-location": "method"
+ },
+ "ContentLength": {
+ "name": "Content-Length",
+ "in": "header",
+ "description": "Required for \"Append Data\" and \"Flush Data\". Must be 0 for \"Flush Data\". Must be the length of the request content in bytes for \"Append Data\".",
+ "minimum": 0,
+ "required": false,
+ "type": "integer",
+ "format": "int64",
+ "x-ms-parameter-location": "method"
+ },
+ "PathExpiryOptions": {
+ "name": "x-ms-expiry-option",
+ "x-ms-client-name": "ExpiryOptions",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "enum": [
+ "NeverExpire",
+ "RelativeToCreation",
+ "RelativeToNow",
+ "Absolute"
+ ],
+ "x-ms-enum": {
+ "name": "PathExpiryOptions",
+ "modelAsString": true
+ },
+ "x-ms-parameter-location": "method",
+ "description": "Required. Indicates mode of the expiry time"
+ },
+ "PathExpiryOptionsOptional": {
+ "name": "x-ms-expiry-option",
+ "x-ms-client-name": "ExpiryOptions",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "NeverExpire",
+ "RelativeToCreation",
+ "RelativeToNow",
+ "Absolute"
+ ],
+ "x-ms-enum": {
+ "name": "PathExpiryOptions",
+ "modelAsString": true
+ },
+ "x-ms-parameter-location": "method",
+ "description": "Required. Indicates mode of the expiry time"
+ },
+ "PathExpiryTime": {
+ "name": "x-ms-expiry-time",
+ "x-ms-client-name": "ExpiresOn",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "description": "The time to set the blob to expiry"
+ },
+ "UndeleteSource": {
+ "name": "x-ms-undelete-source",
+ "x-ms-client-name": "UndeleteSource",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "description": "Only for hierarchical namespace enabled accounts. Optional. The path of the soft deleted blob to undelete."
+ },
+ "Marker": {
+ "name": "marker",
+ "in": "query",
+ "required": false,
+ "type": "string",
+ "description": "A string value that identifies the portion of the list of containers to be returned with the next listing operation. The operation returns the NextMarker value within the response body if the listing operation did not return all containers remaining to be listed with the current page. The NextMarker value can be used as the value for the marker parameter in a subsequent call to request the next page of list items. The marker value is opaque to the client.",
+ "x-ms-parameter-location": "method"
+ },
+ "ListBlobsInclude": {
+ "name": "include",
+ "in": "query",
+ "required": false,
+ "type": "array",
+ "collectionFormat": "csv",
+ "items": {
+ "type": "string",
+ "enum": [
+ "copy",
+ "deleted",
+ "metadata",
+ "snapshots",
+ "uncommittedblobs",
+ "versions",
+ "tags"
+ ],
+ "x-ms-enum": {
+ "name": "ListBlobsIncludeItem",
+ "modelAsString": false
+ }
+ },
+ "x-ms-parameter-location": "method",
+ "description": "Include this parameter to specify one or more datasets to include in the response."
+ },
+ "ListBlobsShowOnly": {
+ "name": "showonly",
+ "in": "query",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "deleted"
+ ],
+ "x-ms-enum": {
+ "name": "ListBlobsShowOnly",
+ "modelAsString": false
+ },
+ "x-ms-parameter-location": "method",
+ "description": "Include this parameter to specify one or more datasets to include in the response."
+ },
+ "Delimiter": {
+ "name": "delimiter",
+ "description": "When the request includes this parameter, the operation returns a BlobPrefix element in the response body that acts as a placeholder for all blobs whose names begin with the same substring up to the appearance of the delimiter character. The delimiter may be a single character or a string.",
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "in": "query",
+ "required": false
+ },
+ "EncryptionKey": {
+ "name": "x-ms-encryption-key",
+ "x-ms-client-name": "encryptionKey",
+ "type": "string",
+ "in": "header",
+ "required": false,
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "cpk-info"
+ },
+ "description": "Optional. Specifies the encryption key to use to encrypt the data provided in the request. If not specified, encryption is performed with the root account encryption key. For more information, see Encryption at Rest for Azure Storage Services."
+ },
+ "EncryptionKeySha256": {
+ "name": "x-ms-encryption-key-sha256",
+ "x-ms-client-name": "encryptionKeySha256",
+ "type": "string",
+ "in": "header",
+ "required": false,
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "cpk-info"
+ },
+ "description": "The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided."
+ },
+ "EncryptionAlgorithm": {
+ "name": "x-ms-encryption-algorithm",
+ "x-ms-client-name": "encryptionAlgorithm",
+ "type": "string",
+ "in": "header",
+ "required": false,
+ "enum": [
+ "AES256"
+ ],
+ "x-ms-enum": {
+ "name": "EncryptionAlgorithmType",
+ "modelAsString": false
+ },
+ "x-ms-parameter-location": "method",
+ "x-ms-parameter-grouping": {
+ "name": "cpk-info"
+ },
+ "description": "The algorithm used to produce the encryption key hash. Currently, the only accepted value is \"AES256\". Must be provided if the x-ms-encryption-key header is provided."
+ },
+ "Flush": {
+ "name": "flush",
+ "type": "boolean",
+ "in": "query",
+ "required": false,
+ "x-ms-parameter-location": "method",
+ "description": "If file should be flushed after the append"
+ },
+ "EncryptionContext": {
+ "name": "x-ms-encryption-context",
+ "x-ms-client-name": "encryptionContext",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "x-ms-parameter-location": "method",
+ "description": "Specifies the encryption context to set on the file."
+ },
+ "Paginated": {
+ "name": "paginated",
+ "in": "query",
+ "description": "If true, paginated behavior will be seen. Pagination is for the recursive ACL checks as a POSIX requirement in the server and Delete in an atomic operation once the ACL checks are completed. If false or missing, normal default behavior will kick in, which may timeout in case of very large directories due to recursive ACL checks. This new parameter is introduced for backward compatibility. ",
+ "x-ms-parameter-location": "method",
+ "required": false,
+ "type": "boolean"
+ }
+ },
+ "definitions": {
+ "AclFailedEntry": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "errorMessage": {
+ "type": "string"
+ }
+ }
+ },
+ "SetAccessControlRecursiveResponse": {
+ "type": "object",
+ "properties": {
+ "directoriesSuccessful": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "filesSuccessful": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "failureCount": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "failedEntries": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/AclFailedEntry"
+ }
+ }
+ }
+ },
+ "Path": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "isDirectory": {
+ "default": false,
+ "type": "boolean"
+ },
+ "lastModified": {
+ "type": "string"
+ },
+ "eTag": {
+ "type": "string"
+ },
+ "contentLength": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "owner": {
+ "type": "string"
+ },
+ "group": {
+ "type": "string"
+ },
+ "permissions": {
+ "type": "string"
+ },
+ "EncryptionScope": {
+ "type": "string",
+ "description": "The name of the encryption scope under which the blob is encrypted."
+ },
+ "creationTime": {
+ "type": "string"
+ },
+ "expiryTime": {
+ "type": "string"
+ },
+ "EncryptionContext": {
+ "type": "string"
+ }
+ }
+ },
+ "PathList": {
+ "type": "object",
+ "properties": {
+ "paths": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Path"
+ }
+ }
+ }
+ },
+ "FileSystem": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "lastModified": {
+ "type": "string"
+ },
+ "eTag": {
+ "type": "string"
+ }
+ }
+ },
+ "ListBlobsHierarchySegmentResponse": {
+ "xml": {
+ "name": "EnumerationResults"
+ },
+ "description": "An enumeration of blobs",
+ "type": "object",
+ "required": [
+ "ServiceEndpoint",
+ "ContainerName",
+ "Segment"
+ ],
+ "properties": {
+ "ServiceEndpoint": {
+ "type": "string",
+ "xml": {
+ "attribute": true
+ }
+ },
+ "ContainerName": {
+ "type": "string",
+ "xml": {
+ "attribute": true
+ }
+ },
+ "Prefix": {
+ "type": "string"
+ },
+ "Marker": {
+ "type": "string"
+ },
+ "MaxResults": {
+ "type": "integer"
+ },
+ "Delimiter": {
+ "type": "string"
+ },
+ "Segment": {
+ "$ref": "#/definitions/BlobHierarchyListSegment"
+ },
+ "NextMarker": {
+ "type": "string"
+ }
+ }
+ },
+ "BlobHierarchyListSegment": {
+ "xml": {
+ "name": "Blobs"
+ },
+ "type": "object",
+ "required": [
+ "BlobItems"
+ ],
+ "properties": {
+ "BlobPrefixes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/BlobPrefix"
+ }
+ },
+ "BlobItems": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/BlobItemInternal"
+ }
+ }
+ }
+ },
+ "BlobPrefix": {
+ "type": "object",
+ "required": [
+ "Name"
+ ],
+ "properties": {
+ "Name": {
+ "type": "string"
+ }
+ }
+ },
+ "BlobItemInternal": {
+ "xml": {
+ "name": "Blob"
+ },
+ "description": "An Azure Storage blob",
+ "type": "object",
+ "required": [
+ "Name",
+ "Deleted",
+ "Snapshot",
+ "Properties"
+ ],
+ "properties": {
+ "Name": {
+ "type": "string"
+ },
+ "Deleted": {
+ "type": "boolean"
+ },
+ "Snapshot": {
+ "type": "string"
+ },
+ "VersionId": {
+ "type": "string"
+ },
+ "IsCurrentVersion": {
+ "type": "boolean"
+ },
+ "Properties": {
+ "$ref": "#/definitions/BlobPropertiesInternal"
+ },
+ "DeletionId": {
+ "type": "string"
+ }
+ }
+ },
+ "BlobPropertiesInternal": {
+ "xml": {
+ "name": "Properties"
+ },
+ "description": "Properties of a blob",
+ "type": "object",
+ "required": [
+ "Etag",
+ "Last-Modified"
+ ],
+ "properties": {
+ "Creation-Time": {
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "Last-Modified": {
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "Etag": {
+ "type": "string"
+ },
+ "Content-Length": {
+ "type": "integer",
+ "format": "int64",
+ "description": "Size in bytes"
+ },
+ "Content-Type": {
+ "type": "string"
+ },
+ "Content-Encoding": {
+ "type": "string"
+ },
+ "Content-Language": {
+ "type": "string"
+ },
+ "Content-MD5": {
+ "type": "string",
+ "format": "byte"
+ },
+ "Content-Disposition": {
+ "type": "string"
+ },
+ "Cache-Control": {
+ "type": "string"
+ },
+ "x-ms-blob-sequence-number": {
+ "x-ms-client-name": "blobSequenceNumber",
+ "type": "integer",
+ "format": "int64"
+ },
+ "CopyId": {
+ "type": "string"
+ },
+ "CopySource": {
+ "type": "string"
+ },
+ "CopyProgress": {
+ "type": "string"
+ },
+ "CopyCompletionTime": {
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "CopyStatusDescription": {
+ "type": "string"
+ },
+ "ServerEncrypted": {
+ "type": "boolean"
+ },
+ "IncrementalCopy": {
+ "type": "boolean"
+ },
+ "DestinationSnapshot": {
+ "type": "string"
+ },
+ "DeletedTime": {
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "RemainingRetentionDays": {
+ "type": "integer"
+ },
+ "AccessTierInferred": {
+ "type": "boolean"
+ },
+ "CustomerProvidedKeySha256": {
+ "type": "string"
+ },
+ "EncryptionScope": {
+ "type": "string",
+ "description": "The name of the encryption scope under which the blob is encrypted."
+ },
+ "AccessTierChangeTime": {
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "TagCount": {
+ "type": "integer"
+ },
+ "Expiry-Time": {
+ "x-ms-client-name": "ExpiresOn",
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "Sealed": {
+ "x-ms-client-name": "IsSealed",
+ "type": "boolean"
+ },
+ "LastAccessTime": {
+ "x-ms-client-name": "LastAccessedOn",
+ "type": "string",
+ "format": "date-time-rfc1123"
+ },
+ "DeleteTime": {
+ "type": "string",
+ "format": "date-time-rfc1123"
+ }
+ }
+ },
+ "FileSystemList": {
+ "type": "object",
+ "properties": {
+ "filesystems": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/FileSystem"
+ }
+ }
+ }
+ },
+ "StorageError": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "type": "object",
+ "description": "The service error response object.",
+ "properties": {
+ "Code": {
+ "description": "The service error code.",
+ "type": "string"
+ },
+ "Message": {
+ "description": "The service error message.",
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/swagger/dfs.md b/swagger/dfs.md
new file mode 100644
index 000000000..4ac8e9616
--- /dev/null
+++ b/swagger/dfs.md
@@ -0,0 +1,21 @@
+# Azurite DataLake Storage
+
+> see https://aka.ms/autorest
+
+```yaml
+package-name: azurite-server-dfs
+title: AzuriteServerDataLake
+description: Azurite Server for DataLake
+enable-xml: true
+generate-metadata: false
+license-header: MICROSOFT_MIT_NO_VERSION
+output-folder: ../src/dfs/generated
+input-file: datalake-storage-2023-05-03.json
+model-date-time-as-string: true
+optional-response-headers: true
+enum-types: true
+```
+
+## Changes Made to Client Swagger
+
+1. None so far