From 0fdaaa8687d8a8963b28671f6f60ec2bbd47411b Mon Sep 17 00:00:00 2001 From: saravanan-venakatesan Date: Mon, 14 Jun 2021 14:59:10 +0530 Subject: [PATCH 1/2] Utility changes for latest version. --- .../jobs/triggered/utility/Azure.Core.dll | Bin 0 -> 182648 bytes .../jobs/triggered/utility/Azure.Core.xml | 3395 ++ .../triggered/utility/Azure.Storage.Blobs.dll | Bin 0 -> 904080 bytes .../triggered/utility/Azure.Storage.Blobs.xml | 23111 +++++++++++ .../utility/Azure.Storage.Common.dll | Bin 0 -> 78224 bytes .../utility/Azure.Storage.Common.xml | 1442 + .../triggered/utility/CoreBlobMigration.exe | Bin 0 -> 44544 bytes .../utility/CoreBlobMigration.exe.config | 56 + .../triggered/utility/CoreBlobMigration.pdb | Bin 0 -> 140800 bytes .../utility/Microsoft.Bcl.AsyncInterfaces.dll | Bin 0 -> 21064 bytes .../utility/Microsoft.Bcl.AsyncInterfaces.xml | 223 + .../triggered/utility/Newtonsoft.Json.dll | Bin 0 -> 652288 bytes .../triggered/utility/Newtonsoft.Json.xml | 10760 +++++ app_data/jobs/triggered/utility/Npgsql.dll | Bin 0 -> 907776 bytes app_data/jobs/triggered/utility/Npgsql.xml | 12345 ++++++ .../Syncfusion.Server.Base.Encryption.dll | Bin 0 -> 17408 bytes .../utility/Syncfusion.Server.Base.Logger.dll | Bin 0 -> 9216 bytes .../jobs/triggered/utility/System.Buffers.dll | Bin 0 -> 20856 bytes .../jobs/triggered/utility/System.Buffers.xml | 38 + ...tem.Configuration.ConfigurationManager.dll | Bin 0 -> 84872 bytes ...tem.Configuration.ConfigurationManager.xml | 5300 +++ .../System.Diagnostics.DiagnosticSource.dll | Bin 0 -> 63864 bytes .../System.Diagnostics.DiagnosticSource.xml | 438 + .../triggered/utility/System.Memory.Data.dll | Bin 0 -> 21384 bytes .../triggered/utility/System.Memory.Data.xml | 167 + .../jobs/triggered/utility/System.Memory.dll | Bin 0 -> 141184 bytes .../jobs/triggered/utility/System.Memory.xml | 355 + .../utility/System.Numerics.Vectors.dll | Bin 0 -> 115856 bytes .../utility/System.Numerics.Vectors.xml | 2621 ++ ...System.Runtime.CompilerServices.Unsafe.dll | Bin 0 -> 16760 bytes ...System.Runtime.CompilerServices.Unsafe.xml | 252 + .../utility/System.Text.Encodings.Web.dll | Bin 0 -> 59768 bytes .../utility/System.Text.Encodings.Web.xml | 932 + .../triggered/utility/System.Text.Json.dll | Bin 0 -> 294264 bytes .../triggered/utility/System.Text.Json.xml | 2346 ++ .../utility/System.Threading.Channels.dll | Bin 0 -> 45944 bytes .../utility/System.Threading.Channels.xml | 217 + .../System.Threading.Tasks.Extensions.dll | Bin 0 -> 33048 bytes .../System.Threading.Tasks.Extensions.xml | 166 + .../triggered/utility/System.ValueTuple.dll | Bin 0 -> 25232 bytes .../triggered/utility/System.ValueTuple.xml | 8 + app_data/jobs/triggered/utility/log4net.dll | Bin 0 -> 270336 bytes app_data/jobs/triggered/utility/log4net.xml | 32444 ++++++++++++++++ .../BoldBi/Azure/Development/Log4Net.config | 66 + .../logs/BoldBi/Azure/Live/Log4Net.config | 66 + .../logs/BoldBi/Azure/Staging/Log4Net.config | 66 + .../triggered/utility/logs/Log4Net.config | 48 + 47 files changed, 96862 insertions(+) create mode 100644 app_data/jobs/triggered/utility/Azure.Core.dll create mode 100644 app_data/jobs/triggered/utility/Azure.Core.xml create mode 100644 app_data/jobs/triggered/utility/Azure.Storage.Blobs.dll create mode 100644 app_data/jobs/triggered/utility/Azure.Storage.Blobs.xml create mode 100644 app_data/jobs/triggered/utility/Azure.Storage.Common.dll create mode 100644 app_data/jobs/triggered/utility/Azure.Storage.Common.xml create mode 100644 app_data/jobs/triggered/utility/CoreBlobMigration.exe create mode 100644 app_data/jobs/triggered/utility/CoreBlobMigration.exe.config create mode 100644 app_data/jobs/triggered/utility/CoreBlobMigration.pdb create mode 100644 app_data/jobs/triggered/utility/Microsoft.Bcl.AsyncInterfaces.dll create mode 100644 app_data/jobs/triggered/utility/Microsoft.Bcl.AsyncInterfaces.xml create mode 100644 app_data/jobs/triggered/utility/Newtonsoft.Json.dll create mode 100644 app_data/jobs/triggered/utility/Newtonsoft.Json.xml create mode 100644 app_data/jobs/triggered/utility/Npgsql.dll create mode 100644 app_data/jobs/triggered/utility/Npgsql.xml create mode 100644 app_data/jobs/triggered/utility/Syncfusion.Server.Base.Encryption.dll create mode 100644 app_data/jobs/triggered/utility/Syncfusion.Server.Base.Logger.dll create mode 100644 app_data/jobs/triggered/utility/System.Buffers.dll create mode 100644 app_data/jobs/triggered/utility/System.Buffers.xml create mode 100644 app_data/jobs/triggered/utility/System.Configuration.ConfigurationManager.dll create mode 100644 app_data/jobs/triggered/utility/System.Configuration.ConfigurationManager.xml create mode 100644 app_data/jobs/triggered/utility/System.Diagnostics.DiagnosticSource.dll create mode 100644 app_data/jobs/triggered/utility/System.Diagnostics.DiagnosticSource.xml create mode 100644 app_data/jobs/triggered/utility/System.Memory.Data.dll create mode 100644 app_data/jobs/triggered/utility/System.Memory.Data.xml create mode 100644 app_data/jobs/triggered/utility/System.Memory.dll create mode 100644 app_data/jobs/triggered/utility/System.Memory.xml create mode 100644 app_data/jobs/triggered/utility/System.Numerics.Vectors.dll create mode 100644 app_data/jobs/triggered/utility/System.Numerics.Vectors.xml create mode 100644 app_data/jobs/triggered/utility/System.Runtime.CompilerServices.Unsafe.dll create mode 100644 app_data/jobs/triggered/utility/System.Runtime.CompilerServices.Unsafe.xml create mode 100644 app_data/jobs/triggered/utility/System.Text.Encodings.Web.dll create mode 100644 app_data/jobs/triggered/utility/System.Text.Encodings.Web.xml create mode 100644 app_data/jobs/triggered/utility/System.Text.Json.dll create mode 100644 app_data/jobs/triggered/utility/System.Text.Json.xml create mode 100644 app_data/jobs/triggered/utility/System.Threading.Channels.dll create mode 100644 app_data/jobs/triggered/utility/System.Threading.Channels.xml create mode 100644 app_data/jobs/triggered/utility/System.Threading.Tasks.Extensions.dll create mode 100644 app_data/jobs/triggered/utility/System.Threading.Tasks.Extensions.xml create mode 100644 app_data/jobs/triggered/utility/System.ValueTuple.dll create mode 100644 app_data/jobs/triggered/utility/System.ValueTuple.xml create mode 100644 app_data/jobs/triggered/utility/log4net.dll create mode 100644 app_data/jobs/triggered/utility/log4net.xml create mode 100644 app_data/jobs/triggered/utility/logs/BoldBi/Azure/Development/Log4Net.config create mode 100644 app_data/jobs/triggered/utility/logs/BoldBi/Azure/Live/Log4Net.config create mode 100644 app_data/jobs/triggered/utility/logs/BoldBi/Azure/Staging/Log4Net.config create mode 100644 app_data/jobs/triggered/utility/logs/Log4Net.config diff --git a/app_data/jobs/triggered/utility/Azure.Core.dll b/app_data/jobs/triggered/utility/Azure.Core.dll new file mode 100644 index 0000000000000000000000000000000000000000..9d99125919dca1fd424c5ad31a83e87cccf180a7 GIT binary patch literal 182648 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ξ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 m$G1 + + + Azure.Core + + + + + Represents an Azure service bearer access token with expiry information. + + + + + Creates a new instance of using the provided and . + + The bearer access token value. + The bearer access token expiry date. + + + + Get the access token value. + + + + + Gets the time when the provided token expires. + + + + Indicates whether this instance and a specified object are equal.The object to compare with the current instance. if and this instance are the same type and represent the same value; otherwise, . + + + Returns the hash code for this instance.A 32-bit signed integer that is the hash code for this instance. + + + + Base type for all client option types, exposes various common client options like , , . + + + + + Creates a new instance of . + + + + + The to be used for this client. Defaults to an instance of . + + + + + Gets the client diagnostic options. + + + + + Gets the client retry options. + + + + + Adds an policy into the client pipeline. The position of policy in the pipeline is controlled by parameter. + If you want the policy to execute once per client request use otherwise use + to run the policy for every retry. Note that the same instance of would be added to all pipelines of client constructed using this object. + + The instance to be added to the pipeline. + The position of policy in the pipeline. + + + Determines whether the specified object is equal to the current object.The object to compare with the current object. if the specified object is equal to the current object; otherwise, . + + + Serves as the default hash function.A hash code for the current object. + + + Returns a string that represents the current object.A string that represents the current object. + + + + A key which is used to encrypt, or wrap, another key. + + + + + The Id of the key used to perform cryptographic operations for the client. + + + + + Encrypts the specified key using the specified algorithm. + + The key wrap algorithm used to encrypt the specified key. + The key to be encrypted. + A controlling the request lifetime. + The encrypted key bytes. + + + + Encrypts the specified key using the specified algorithm. + + The key wrap algorithm used to encrypt the specified key. + The key to be encrypted. + A controlling the request lifetime. + The encrypted key bytes. + + + + Decrypts the specified encrypted key using the specified algorithm. + + The key wrap algorithm which was used to encrypt the specified encrypted key. + The encrypted key to be decrypted. + A controlling the request lifetime. + The decrypted key bytes. + + + + Decrypts the specified encrypted key using the specified algorithm. + + The key wrap algorithm which was used to encrypt the specified encrypted key. + The encrypted key to be decrypted. + A controlling the request lifetime. + The decrypted key bytes. + + + + An object capable of retrieving key encryption keys from a provided key identifier. + + + + + Retrieves the key encryption key corresponding to the specified keyId. + + The key identifier of the key encryption key to retrieve. + A controlling the request lifetime. + The key encryption key corresponding to the specified keyId. + + + + Retrieves the key encryption key corresponding to the specified keyId. + + The key identifier of the key encryption key to retrieve. + A controlling the request lifetime. + The key encryption key corresponding to the specified keyId. + + + + Exposes client options related to logging, telemetry and distributed tracing. + + + + + Get or sets value indicating whether HTTP pipeline logging is enabled. + + + + + Gets or sets value indicating whether distributed tracing spans are going to be created for this clients methods calls and HTTP calls. + + + + + Gets or sets value indicating whether the "User-Agent" header containing , client library package name and version, + and should be sent. + The default value can be controlled process wide by setting AZURE_TELEMETRY_DISABLED to true, false, 1 or 0. + + + + + Gets or sets value indicating if request or response content should be logged. + + + + + Gets or sets value indicating maximum size of content to log in bytes. Defaults to 4096. + + + + + Gets a list of headers names that are not redacted during logging. + + + + + Gets a list of query parameter names that are not redacted during logging. + + + + + Gets or sets the value sent a the first part of "User-Agent" headers for all requests issues by this client. Defaults to . + + + + + Gets or sets the default application id. Default application id would be set on all instances. + + + + + Implementation of that listens to events produces by Azure SDK Client libraries. + + + + + The trait name that has to be present on all event sources collected by this listener. + + + + + The trait value that has to be present on all event sources collected by this listener. + + + + + Creates an instance of that executes a callback every time event is written. + + The to call when event is written. The second parameter is formatted message. + The level of events to enable. + + + Called for all existing event sources when the event listener is created and when a new event source is attached to the listener.The event source. + + + Called whenever an event has been written by an event source for which the event listener has enabled events.The event arguments that describe the event. + + + + Creates a new instance of that forwards events to . + + The level of events to enable. + + + + Creates a new instance of that forwards events to . + + The level of events to enable. + + + + Marks the type exposing client registration options for clients registered with . + + The type of the client. + The options type used by the client. + + + + Abstraction for registering Azure clients in dependency injection containers. + + + + + Registers a client in the dependency injection container using the factory to create a client instance. + + The type of the client. + The client options type used the client. + The factory, that given the instance of options, returns a client instance. + that allows customizing the client registration. + + + + Abstraction for registering Azure clients in dependency injection containers and initializing them using IConfiguration objects. + + + + + Registers a client in the dependency injection container using the configuration to create a client instance. + + The type of the client. + The client options type used the client. + Instance of to use. + that allows customizing the client registration. + + + + Abstraction for registering Azure clients that require in dependency injection containers. + + + + + Registers a client in dependency injection container the using the factory to create a client instance. + + The type of the client. + The client options type used the client. + The factory, that given the instance of options and credential, returns a client instance. + Specifies whether the credential is optional (client supports anonymous authentication). + that allows customizing the client registration. + + + + Represents an HTTP header. + + + + + Creates a new instance of with provided name and value. + + The header name. + The header value. + + + + Gets header name. + + + + + Gets header value. If the header has multiple values they would be joined with a comma. To get separate values use or . + + + + Returns the hash code for this instance.A 32-bit signed integer that is the hash code for this instance. + + + Indicates whether this instance and a specified object are equal.The object to compare with the current instance. if and this instance are the same type and represent the same value; otherwise, . + + + Returns the fully qualified type name of this instance.The fully qualified type name. + + + Indicates whether the current object is equal to another object of the same type.An object to compare with this object. if the current object is equal to the parameter; otherwise, . + + + + Contains names of commonly used headers. + + + + + Returns. "Date" + + + + + Returns. "x-ms-date" + + + + + Returns. "Content-Type" + + + + + Returns. "Content-Length" + + + + + Returns. "ETag" + + + + + Returns. "x-ms-request-id" + + + + + Returns. "User-Agent" + + + + + Returns. "Accept" + + + + + Returns. "Authorization" + + + + + Returns. "Range" + + + + + Returns. "x-ms-range" + + + + + Returns. "If-Match" + + + + + Returns. "If-None-Match" + + + + + Returns. "If-Modified-Since" + + + + + Returns. "If-Unmodified-Since" + + + + + Returns. "Referer" + + + + + Returns. "Host" + + + + + Returns "Content-Disposition". + + + + + Returns "WWW-Authenticate". + + + + + Commonly defined header values. + + + + + Returns header with name "ContentType" and value "application/json". + + + + + Returns header with name "Accept" and value "application/json". + + + + + Returns header with name "ContentType" and value "application/octet-stream". + + + + + Returns header with name "ContentType" and value "application/x-www-form-urlencoded". + + + + + Represents a context flowing through the . + + + + + Creates a new instance of . + + The request. + The response classifier. + + + + Gets the associated with this message. + + + + + Gets the associated with this message. Throws an exception if it wasn't set yet. + To avoid the exception use property to check. + + + + + Gets the value indicating if the response is set on this message. + + + + + The to be used during the processing. + + + + + The instance to use for response classification during pipeline invocation. + + + + + Gets or sets the value indicating if response would be buffered as part of the pipeline. Defaults to true. + + + + + Gets a property that modifies the pipeline behavior. Please refer to individual policies documentation on what properties it supports. + + The property name. + The property value. + true if property exists, otherwise. false. + + + + Sets a property that modifies the pipeline behavior. Please refer to individual policies documentation on what properties it supports. + + The property name. + The property value. + + + + Returns the response content stream and releases it ownership to the caller. After calling this methods using or would result in exception. + + The content stream or null if response didn't have any. + + + + Disposes the request and response. + + + + + Represents a position of the policy in the pipeline. + + + + + The policy would be invoked once per pipeline invocation (service call). + + + + + The policy would be invoked every time request is retried. + + + + + A policy that sends an provided by a as an Authentication header. + + + + + Creates a new instance of using provided token credential and scope to authenticate for. + + The token credential to use for authentication. + The scope to authenticate for. + + + + Creates a new instance of using provided token credential and scopes to authenticate for. + + The token credential to use for authentication. + Scopes to authenticate for. + + + + Applies the policy to the . Implementers are expected to mutate before calling and observe the changes after. + + The this policy would be applied to. + The set of to execute after current one. + The representing the asynchronous operation. + + + + Applies the policy to the . Implementers are expected to mutate before calling and observe the changes after. + + The this policy would be applied to. + The set of to execute after current one. + + + + An implementation that uses as the transport. + + + + + Creates a new instance using default configuration. + + + + + Creates a new instance of using the provided client instance. + + The instance of to use. + + + + Creates a new instance of using the provided client instance. + + The instance of to use. + + + + A shared instance of with default parameters. + + + + + Creates a new transport specific instance of . This should not be called directly, or + should be used instead. + + + + + + Sends the request contained by the and sets the property to received response synchronously. + + The containing request and response. + + + + Sends the request contained by the and sets the property to received response asynchronously. + + The containing request and response. + + + + Represents a primitive for sending HTTP requests and receiving responses extensible by adding processing steps. + + + + + Creates a new instance of with the provided transport, policies and response classifier. + + The to use for sending the requests. + Policies to be invoked as part of the pipeline in order. + The response classifier to be used in invocations. + + + + Creates a new instance. + + The request. + + + + Creates a new instance. + + The message. + + + + The instance used in this pipeline invocations. + + + + + Invokes the pipeline asynchronously. After the task completes response would be set to the property. + + The to send. + The to use. + The representing the asynchronous operation. + + + + Invokes the pipeline synchronously. After the task completes response would be set to the property. + + The to send. + The to use. + + + + Invokes the pipeline asynchronously with the provided request. + + The to send. + The to use. + The representing the asynchronous operation. + + + + Invokes the pipeline synchronously with the provided request. + + The to send. + The to use. + The from the server. + + + + Creates a scope in which all outgoing requests would use the provided + + The client request id value to be sent with request. + The instance that needs to be disposed when client request id shouldn't be sent anymore. + + Sample usage: + + var secretClient = new SecretClient(new Uri("http://example.com"), new DefaultAzureCredential()); + + using (HttpPipeline.CreateClientRequestIdScope("<custom-client-request-id>")) + { + // The HTTP request resulting from the client call would have x-ms-client-request-id value set to <custom-client-request-id> + secretClient.GetSecret("<secret-name>"); + } + + + + + + Creates a scope in which all s would have provided properties. + + Properties to be added to s + The instance that needs to be disposed when properties shouldn't be used anymore. + + + + Factory for creating instances of populated with default policies. + + + + + Creates an instance of populated with default policies, customer provided policies from and client provided per call policies. + + The customer provided client options object. + Client provided per-retry policies. + A new instance of + + + + Creates an instance of populated with default policies, customer provided policies from and client provided per call policies. + + The customer provided client options object. + Client provided per-call policies. + Client provided per-retry policies. + The client provided response classifier. + A new instance of + + + + Represent an extension point for the that can mutate the and react to received . + + + + + Applies the policy to the . Implementers are expected to mutate before calling and observe the changes after. + + The this policy would be applied to. + The set of to execute after current one. + The representing the asynchronous operation. + + + + Applies the policy to the . Implementers are expected to mutate before calling and observe the changes after. + + The this policy would be applied to. + The set of to execute after current one. + + + + Invokes the next in the . + + The next policy would be applied to. + The set of to execute after next one. + The representing the asynchronous operation. + + + + Invokes the next in the . + + The next policy would be applied to. + The set of to execute after next one. + + + + Represents a that doesn't do any asynchronous or synchronously blocking operations. + + + + + Initializes a new instance of + + + + + Applies the policy to the . Implementers are expected to mutate before calling and observe the changes after. + + The this policy would be applied to. + The set of to execute after current one. + + + + Applies the policy to the . Implementers are expected to mutate before calling and observe the changes after. + + The this policy would be applied to. + The set of to execute after current one. + The representing the asynchronous operation. + + + + Method is invoked before the request is sent. + + The containing the request. + + + + Method is invoked after the response is received. + + The containing the response. + + + + Represents an HTTP pipeline transport used to send HTTP requests and receive responses. + + + + + Sends the request contained by the and sets the property to received response synchronously. + + The containing request and response. + + + + Sends the request contained by the and sets the property to received response asynchronously. + + The containing request and response. + + + + Creates a new transport specific instance of . This should not be called directly, or + should be used instead. + + + + + + The based implementation. + + + + + Creates a new instance of + + + + + Sends the request contained by the and sets the property to received response synchronously. + + The containing request and response. + + + + Sends the request contained by the and sets the property to received response asynchronously. + + The containing request and response. + + + + Creates a new transport specific instance of . This should not be called directly, or + should be used instead. + + + + + + Gets the proxy URI. (iWebProxy interface). + + + + + Checks if URI is subject to proxy or not. + + + + + Read-only Stream that will throw a if it has to wait longer than a configurable timeout to read more data + + + + + Pipeline policy to buffer response content or add a timeout to response content managed by the client + + + + + HACK HACK HACK. Some runtime environments like Azure.Functions downgrade System.Diagnostic.DiagnosticSource package version causing method not found exceptions in customer apps + This type is a temporary workaround to avoid the issue. + + + + + Both and are defined as public structs so that foreach can use duck typing + to call and avoid heap memory allocation. + Please don't delete this method and don't make these types private. + + + + + + Represents an HTTP request. Use or to create an instance. + + + + + Gets or sets and instance of used to create the Uri. + + + + + Gets or sets the request HTTP method. + + + + + Gets or sets the request content. + + + + + Adds a header value to the header collection. + + The header name. + The header value. + + + + Returns header value if the header is stored in the collection. If the header has multiple values they are going to be joined with a comma. + + The header name. + The reference to populate with value. + true if the specified header is stored in the collection, otherwise false. + + + + Returns header values if the header is stored in the collection. + + The header name. + The reference to populate with values. + true if the specified header is stored in the collection, otherwise false. + + + + Returns true if the header is stored in the collection. + + The header name. + true if the specified header is stored in the collection, otherwise false. + + + + Sets a header value the header collection. + + The header name. + The header value. + + + + Removes the header from the collection. + + The header name. + + + + Returns an iterator enumerating in the request. + + The enumerating in the response. + + + + Gets or sets the client request id that was sent to the server as x-ms-client-request-id headers. + + + + + Gets the response HTTP headers. + + + + + Frees resources held by this instance. + + + + + Represents the content sent as part of the . + + + + + Creates an instance of that wraps a . + + The to use. + An instance of that wraps a . + + + + Creates an instance of that wraps an of . + + The of to use. + An instance of that wraps provided of . + + + + Creates an instance of that wraps an of . + + The of to use. + The offset in to start from. + The length of the segment to use. + An instance of that wraps provided of . + + + + Creates an instance of that wraps a . + + The to use. + An instance of that wraps a . + + + + Creates an instance of that wraps a . + + The to use. + An instance of that wraps a . + + + + Creates a RequestContent representing the UTF-8 Encoding of the given / + + The to use. + An instance of that wraps a . + The returned content represents the UTF-8 Encoding of the given string. + + + + Creates an instance of that wraps a . + + The to use. + An instance of that wraps a . + + + + Creates an instance of that wraps a serialized version of an object. + + The to serialize. + The to use to convert the object to bytes. If not provided, is used. + An instance of that wraps a serialized version of the object. + + + + Creates a RequestContent representing the UTF-8 Encoding of the given . + + The to use. + + + + Creates a RequestContent that wraps a . + + The to use. + + + + Writes contents of this object to an instance of . + + The stream to write to. + To cancellation token to use. + + + + Writes contents of this object to an instance of . + + The stream to write to. + To cancellation token to use. + + + + Attempts to compute the length of the underlying content, if available. + + The length of the underlying data. + + + + Frees resources held by the object. + + + + + Headers to be sent as part of the . + + + + + Returns an enumerator that iterates through the . + + A for the . + + + + Returns an enumerator that iterates through the . + + A for the . + + + + Adds the instance to the collection. + + The header to add. + + + + Adds the header to the collection. If a header with this name already exist adds an additional value to the header values. + + The header name. + The header value. + + + + Returns header value if the headers is stored in the collection. If the header has multiple values they are going to be joined with a comma. + + The header name. + The reference to populate with value. + true if the specified header is stored in the collection, otherwise false. + + + + Returns header values if the header is stored in the collection. + + The header name. + The reference to populate with values. + true if the specified header is stored in the collection, otherwise false. + + + + Returns true if the headers is stored in the collection. + + The header name. + true if the specified header is stored in the collection, otherwise false. + + + + Sets the header value name. If a header with this name already exist replaces it's value. + + The header name. + The header value. + + + + Removes the header from the collection. + + The header name. + true if the header existed, otherwise false. + + + + Represents HTTP methods sent as part of a . + + + + + Gets the HTTP method. + + + + + Gets instance for GET method. + + + + + Gets instance for POST method. + + + + + Gets instance for PUT method. + + + + + Gets instance for PATCH method. + + + + + Gets instance for DELETE method. + + + + + Gets instance for HEAD method. + + + + + Gets instance for OPTIONS method. + + + + + Gets instance for TRACE method. + + + + + Creates an instance of with provided method. Method must be all uppercase. + Prefer if can be one of predefined method names. + + The method to use. + + + + Parses string to it's representation. + + The method string to parse. + + + Indicates whether the current object is equal to another object of the same type.An object to compare with this object. if the current object is equal to the parameter; otherwise, . + + + Indicates whether this instance and a specified object are equal.The object to compare with the current instance. if and this instance are the same type and represent the same value; otherwise, . + + + Returns the hash code for this instance.A 32-bit signed integer that is the hash code for this instance. + + + + Compares equality of two instances. + + The method to compare. + The method to compare against. + true if values are equal for and , otherwise false. + + + + Compares inequality of two instances. + + The method to compare. + The method to compare against. + true if values are equal for and , otherwise false. + + + Returns the fully qualified type name of this instance.The fully qualified type name. + + + + Provides a custom builder for Uniform Resource Identifiers (URIs) and modifies URIs for the class. + + + + + Gets or sets the scheme name of the URI. + + + + + Gets or sets the Domain Name System (DNS) host name or IP address of a server. + + + + + Gets or sets the port number of the URI. + + + + + Gets or sets any query information included in the URI. + + + + + Gets or sets the path to the resource referenced by the URI. + + + + + Gets the path and query string to the resource referenced by the URI. + + + + + Replaces values inside this instance with values provided in the parameter. + + The instance to get values from. + + + + Gets the instance constructed by the specified instance. + + + A that contains the URI constructed by the . + + + + + Appends a query parameter adding separator if required. Escapes the value. + + The name of parameter. + The value of parameter. + + + + Appends a query parameter adding separator if required. + + The name of parameter. + The value of parameter. + Whether value should be escaped. + + + + Escapes and appends the to without adding path separator. + Path segments and any other characters will be escaped, e.g. "/" will be escaped as "%3a". + + The value to escape and append. + + + + Optionally escapes and appends the to without adding path separator. + If is true, path segments and any other characters will be escaped, e.g. "/" will be escaped as "%3a". + + The value to optionally escape and append. + Whether value should be escaped. + + + + Returns a string representation of this . + + A string representation of this . + + + + A type that analyzes HTTP responses and exceptions and determines if they should be retried. + + + + + Specifies if the request contained in the should be retried. + + + + + Specifies if the operation that caused the exception should be retried. + + + + + Specifies if the operation that caused the exception should be retried taking the into consideration. + + + + + Specifies if the response contained in the is not successful. + + + + + Headers received as part of the . + + + + + Gets the parsed value of "Date" or "x-ms-date" header. + + + + + Gets the value of "Content-Type" header. + + + + + Gets the parsed value of "Content-Length" header. + + + + + Gets the parsed value of "ETag" header. + + + + + Gets the value of "x-ms-request-id" header. + + + + + Returns an enumerator that iterates through the . + + A for the . + + + + Returns an enumerator that iterates through the . + + A for the . + + + + Returns header value if the header is stored in the collection. If header has multiple values they are going to be joined with a comma. + + The header name. + The reference to populate with value. + true if the specified header is stored in the collection, otherwise false. + + + + Returns header values if the header is stored in the collection. + + The header name. + The reference to populate with values. + true if the specified header is stored in the collection, otherwise false. + + + + Returns true if the header is stored in the collection. + + The header name. + true if the specified header is stored in the collection, otherwise false. + + + + The type of approach to apply when calculating the delay + between retry attempts. + + + + + Retry attempts happen at fixed intervals; each delay is a consistent duration. + + + + + Retry attempts will delay based on a backoff strategy, where each attempt will increase + the duration that it waits before retrying. + + + + + The set of options that can be specified to influence how + retry attempts are made, and a failure is eligible to be retried. + + + + + The maximum number of retry attempts before giving up. + + + + + The delay between retry attempts for a fixed approach or the delay + on which to base calculations for a backoff-based approach. + + + + + The maximum permissible delay between retry attempts. + + + + + The approach to use for calculating retry delays. + + + + + The timeout applied to an individual network operations. + + + + + Converts type member names to serializable member names. + + + + + Converts a to a serializable member name. + + The to convert to a serializable member name. + The serializable member name, or null if the member is not defined or ignored by the serializer. + is null. + + + + A implementation that uses to for serialization/deserialization. + + + + + A shared instance of , initialized with the default options. + + + + + Initializes new instance of . + + + + + Initializes new instance of . + + The instance to use when serializing/deserializing. + is null. + + + + Convert the provided value to it's binary representation and write it to . + + The to write to. + The value to convert. + The type of the to convert. + The to use during serialization. + + + + Convert the provided value to it's binary representation and write it to . + + The to write to. + The value to convert. + The type of the to convert. + The to use during serialization. + + + + Read the binary representation into a . + The Stream will be read to completion. + + The to read from. + The type of the object to convert to and return. + The to use during deserialization. + + + + Read the binary representation into a . + The Stream will be read to completion. + + The to read from. + The type of the object to convert to and return. + The to use during deserialization. + + + + Convert the provided value to it's binary representation and return it as a instance. + + The value to convert. + The type to use when serializing . If omitted, the type will be determined using (). + The to use during serialization. + The object's binary representation as . + + + + Convert the provided value to it's binary representation and return it as a instance. + + The value to convert. + The type to use when serializing . If omitted, the type will be determined using (). + The to use during serialization. + The object's binary representation as . + + + + Converts a to a serializable member name. + + The to convert to a serializable member name. + The serializable member name, or null if the member is not defined or ignored by the serializer. + is null. + + + + An abstraction for reading typed objects. + + + + + Convert the provided value to it's binary representation and write it to . + + The to write to. + The value to convert. + The type of the to convert. + The to use during serialization. + + + + Convert the provided value to it's binary representation and write it to . + + The to write to. + The value to convert. + The type of the to convert. + The to use during serialization. + + + + Read the binary representation into a . + The Stream will be read to completion. + + The to read from. + The type of the object to convert to and return. + The to use during deserialization. + + + + Read the binary representation into a . + The Stream will be read to completion. + + The to read from. + The type of the object to convert to and return. + The to use during deserialization. + + + + Convert the provided value to it's binary representation and return it as a instance. + + The value to convert. + The type to use when serializing . If omitted, the type will be determined using (). + The to use during serialization. + The object's binary representation as . + + + + Convert the provided value to it's binary representation and return it as a instance. + + The value to convert. + The type to use when serializing . If omitted, the type will be determined using (). + The to use during serialization. + The object's binary representation as . + + + + Represents a method that can handle an event and execute either + synchronously or asynchronously. + + + Type of the event arguments deriving or equal to + . + + + An instance that contains the event + data. + + + A task that represents the handler. You can return + if implementing a sync handler. + Please see the Remarks section for more details. + + + + If you're using the synchronous, blocking methods of a client (i.e., + methods without an Async suffix), they will raise events that require + handlers to execute synchronously as well. Even though the signature + of your handler returns a , you should write regular + sync code that blocks and return when + finished. + + var client = new AlarmClient(); + client.Ring += (SyncAsyncEventArgs e) => + { + Console.WriteLine("Wake up!"); + return Task.CompletedTask; + }; + + client.Snooze(); + + If you need to call an async method from a synchronous event handler, + you have two options. You can use to + queue a task for execution on the ThreadPool without waiting on it to + complete. This "fire and forget" approach may not run before your + handler finishes executing. Be sure to understand + + exception handling in the Task Parallel Library to avoid + unhandled exceptions tearing down your process. If you absolutely need + the async method to execute before returning from your handler, you can + call myAsyncTask.GetAwaiter().GetResult(). Please be aware + this may cause ThreadPool starvation. See the sync-over-async note in + Remarks for more details. + + + If you're using the asynchronous, non-blocking methods of a client + (i.e., methods with an Async suffix), they will raise events that + expect handlers to execute asynchronously. + + var client = new AlarmClient(); + client.Ring += async (SyncAsyncEventArgs e) => + { + await Console.Out.WriteLineAsync("Wake up!"); + }; + + await client.SnoozeAsync(); + + + + The same event can be raised from both synchronous and asynchronous + code paths depending on whether you're calling sync or async methods + on a client. If you write an async handler but raise it from a sync + method, the handler will be doing sync-over-async and may cause + ThreadPool starvation. See the note in Remarks for more details. You + should use the + property to check how the event is being raised and implement your + handler accordingly. Here's an example handler that's safe to invoke + from both sync and async code paths. + + var client = new AlarmClient(); + client.Ring += async (SyncAsyncEventArgs e) => + { + if (e.IsRunningSynchronously) + { + Console.WriteLine("Wake up!"); + } + else + { + await Console.Out.WriteLineAsync("Wake up!"); + } + }; + + client.Snooze(); // sync call that blocks + await client.SnoozeAsync(); // async call that doesn't block + + + + + + + Any exceptions thrown by an event handler will be wrapped in a single + AggregateException and thrown from the code that raised the event. You + can check the property + to see the original exceptions thrown by your event handlers. + AggregateException also provides + + a number of helpful methods like + and + to make + complex failures easier to work with. + + var client = new AlarmClient(); + client.Ring += (SyncAsyncEventArgs e) => + throw new InvalidOperationException("Alarm unplugged."); + + try + { + client.Snooze(); + } + catch (AggregateException ex) + { + ex.Handle(e => e is InvalidOperationException); + Console.WriteLine("Please switch to your backup alarm."); + } + + + + + Most Azure client libraries for .NET offer both synchronous and + asynchronous methods for calling Azure services. You can distinguish + the asynchronous methods by their Async suffix. For example, + BlobClient.Download and BlobClient.DownloadAsync make the same + underlying REST call and only differ in whether they block. We + recommend using our async methods for new applications, but there are + perfectly valid cases for using sync methods as well. These dual + method invocation semantics allow for flexibility, but require a little + extra care when writing event handlers. + + + The SyncAsyncEventHandler is a delegate used by events in Azure client + libraries to represent an event handler that can be invoked from either + sync or async code paths. It takes event arguments deriving from + that contain important information for + writing your event handler: + + + + is a cancellation + token related to the original operation that raised the event. It's + important for your handler to pass this token along to any asynchronous + or long-running synchronous operations that take a token so cancellation + (via something like + new CancellationTokenSource(TimeSpan.FromSeconds(10)).Token, + for example) will correctly propagate. + + + + + is a flag indicating + whether your handler was invoked synchronously or asynchronously. If + you're calling sync methods on your client, you should use sync methods + to implement your event handler (you can return + ). If you're calling async methods on + your client, you should use async methods where possible to implement + your event handler. If you're not in control of how the client will be + used or want to write safer code, you should check the + property and call + either sync or async methods as directed. + + + + + Most events will customize the event data by deriving from + and including details about what + triggered the event or providing options to react. Many times this + will include a reference to the client that raised the event in case + you need it for additional processing. + + + + + + When an event using SyncAsyncEventHandler is raised, the handlers will + be executed sequentially to avoid introducing any unintended + parallelism. The event handlers will finish before returning control + to the code path raising the event. This means blocking for events + raised synchronously and waiting for the returned to + complete for events raised asynchronously. + + + Any exceptions thrown from a handler will be wrapped in a single + . If one handler throws an exception, + it will not prevent other handlers from running. This is also relevant + for cancellation because all handlers are still raised if cancellation + occurs. You should both pass + to asynchronous or long-running synchronous operations and consider + calling + in compute heavy handlers. + + + A + distributed tracing span is wrapped around your handlers using + the event name so you can see how long your handlers took to run, + whether they made other calls to Azure services, and details about any + exceptions that were thrown. + + + Executing asynchronous code from a sync code path is commonly referred + to as sync-over-async because you're getting sync behavior but still + invoking all the async machinery. See + + Diagnosing.NET Core ThreadPool Starvation with PerfView + for a detailed explanation of how that can cause serious performance + problems. We recommend you use the + flag to avoid + ThreadPool starvation. + + + + + + Represents a credential capable of providing an OAuth token. + + + + + Gets an for the specified set of scopes. + + The with authentication information. + The to use. + A valid . + + + + Gets an for the specified set of scopes. + + The with authentication information. + The to use. + A valid . + + + + Contains the details of an authentication token request. + + + + + Creates a new TokenRequest with the specified scopes. + + The scopes required for the token. + The of the request requiring a token for authentication, if applicable. + + + + Creates a new TokenRequest with the specified scopes. + + The scopes required for the token. + The of the request requiring a token for authentication, if applicable. + Additional claims to be included in the token. + + + + The scopes required for the token. + + + + + The of the request requiring a token for authentication, if applicable. + + + + + Additional claims to be included in the token. See https://openid.net/specs/openid-connect-core-1_0-final.html#ClaimsParameter for more information on format and content. + + + + + Argument validation. + + + This class should be shared via source using Azure.Core.props and contain only common argument validation. + It is declared partial so that you can use the same familiar class name but extend it with project-specific validation. + To extend the functionality of this class, just declare your own partial class with project-specific methods. + + + Be sure to document exceptions thrown by these methods on your public methods. + + + + + + Throws if is null. + + The value to validate. + The name of the parameter. + is null. + + + + Throws if has not been initialized. + + The value to validate. + The name of the parameter. + has not been initialized. + + + + Throws if is null or an empty collection. + + The value to validate. + The name of the parameter. + is an empty collection. + is null. + + + + Throws if is null or an empty string. + + The value to validate. + The name of the parameter. + is an empty string. + is null. + + + + Throws if is null, an empty string, or consists only of white-space characters. + + The value to validate. + The name of the parameter. + is an empty string or consists only of white-space characters. + is null. + + + + Throws if is the default value for type . + + The type of structure to validate which implements . + The value to validate. + The name of the parameter. + is the default value for type . + + + + Throws if is less than the or greater than the . + + The type of to validate which implements . + The value to validate. + The minimum value to compare. + The maximum value to compare. + The name of the parameter. + + + + A helper class for parsing Authorization challenge headers. + + + + + Parses the specified parameter from a challenge hearder found in the specified . + + The to parse. + The challenge scheme containing the . For example: "Bearer" + The parameter key name containing the value to return. + The value of the parameter name specified in if it is found in the specified . + + + + Iterates through the challenge schemes present in a challenge header. + + + The header value which will be sliced to remove the first parsed . + + The parsed challenge scheme. + + true if a challenge scheme was successfully parsed. + The value of should be passed to to parse the challenge parameters if true. + + + + + Iterates through a challenge header value after being parsed by . + + The header value after being parsed by . + The parsed challenge parameter key. + The parsed challenge parameter value. + The challenge parameter key / value pair separator. The default is '='. + + true if the next available challenge parameter was successfully parsed. + false if there are no more parameters for the current challenge scheme or an additional challenge scheme was encountered in the . + The value of should be passed again to to attempt to parse any additional challenge schemes if false. + + + + + Initializes a new instance of the class. + + The used to authenticate requests. + The name of the key header used for the credential. + + + + Method is invoked before the request is sent. + + The containing the request. + + + + Initializes a new instance of the class. + + The used to authenticate requests. + + + + Method is invoked before the request is sent. + + The containing the request. + + + Converts a Base64URL encoded string to a string. + The Base64Url encoded string containing UTF8 bytes for a string. + The string represented by the Base64URL encoded string. + + + Encode a byte array as a Base64URL encoded string. + Raw byte input buffer. + The bytes, encoded as a Base64URL string. + + + Converts a Base64URL encoded string to a string. + The Base64Url encoded string containing UTF8 bytes for a string. + The string represented by the Base64URL encoded string. + + + Encode a string as a Base64URL encoded string. + String input buffer. + The UTF8 bytes for the string, encoded as a Base64URL string. + + + + An implementation for manipulating headers on . + + + + + Initializes an instance of + + + + + Adds a header value to the header collection. + + The header name. + The header value. + + + + Returns header value if the header is stored in the collection. If the header has multiple values they are going to be joined with a comma. + + The header name. + The reference to populate with value. + true if the specified header is stored in the collection, otherwise false. + + + + Returns header values if the header is stored in the collection. + + The header name. + The reference to populate with values. + true if the specified header is stored in the collection, otherwise false. + + + + Returns true if the header is stored in the collection. + + The header name. + true if the specified header is stored in the collection, otherwise false. + + + + Sets a header value the header collection. + + The header name. + The header value. + + + + Removes the header from the collection. + + The header name. + + + + Returns an iterator enumerating in the request. + + The enumerating in the response. + + + + Copied from https://github.com/dotnet/corefx/blob/master/src/Common/src/CoreLib/System/HashCode.cs. + + + + + A collection of values that may take multiple service requests to + iterate over. + + The type of the values. + + Example of enumerating an AsyncPageable using the async foreach loop: + + // call a service method, which returns AsyncPageable<T> + AsyncPageable<SecretProperties> allSecretProperties = client.GetPropertiesOfSecretsAsync(); + + await foreach (SecretProperties secretProperties in allSecretProperties) + { + Console.WriteLine(secretProperties.Name); + } + + or using a while loop: + + // call a service method, which returns AsyncPageable<T> + AsyncPageable<SecretProperties> allSecretProperties = client.GetPropertiesOfSecretsAsync(); + + IAsyncEnumerator<SecretProperties> enumerator = allSecretProperties.GetAsyncEnumerator(); + try + { + while (await enumerator.MoveNextAsync()) + { + SecretProperties secretProperties = enumerator.Current; + Console.WriteLine(secretProperties.Name); + } + } + finally + { + await enumerator.DisposeAsync(); + } + + + + + + Gets a used for requests made while + enumerating asynchronously. + + + + + Initializes a new instance of the + class for mocking. + + + + + Initializes a new instance of the + class. + + + The used for requests made while + enumerating asynchronously. + + + + + Enumerate the values a at a time. This may + make multiple service requests. + + + A continuation token indicating where to resume paging or null to + begin paging from the beginning. + + + The size of s that should be requested (from + service operations that support it). + + + An async sequence of s. + + + + + Enumerate the values in the collection asynchronously. This may + make multiple service requests. + + + The used for requests made while + enumerating asynchronously. + + An async sequence of values. + + + + Creates an instance of using the provided pages. + + The pages of values to list as part of net new pageable instance. + A new instance of + + + + Creates a string representation of an . + + + A string representation of an . + + + + + Check if two instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + Get a hash code for the . + + Hash code for the . + + + + Key credential used to authenticate to an Azure Service. + It provides the ability to update the key without creating a new client. + + + + + Key used to authenticate to an Azure service. + + + + + Initializes a new instance of the class. + + Key to use to authenticate with the Azure service. + + Thrown when the is null. + + + Thrown when the is empty. + + + + + Updates the service key. + This is intended to be used when you've regenerated your service key + and want to update long lived clients. + + Key to authenticate the service against. + + Thrown when the is null. + + + Thrown when the is empty. + + + + + Credential allowing a named key to be used for authenticating to an Azure Service. + It provides the ability to update the key without creating a new client. + + + + + Name of the key used to authenticate to an Azure service. + + + + + Initializes a new instance of the class. + + The name of the . + The key to use for authenticating with the Azure service. + + Thrown when the or is null. + + + Thrown when the or is empty. + + + + + Updates the named key. This is intended to be used when you've regenerated your + service key and want to update long-lived clients. + + The name of the . + The key to use for authenticating with the Azure service. + + Thrown when the or is null. + + + Thrown when the or is empty. + + + + + Allows deconstruction of the credential into the associated name and key as an atomic operation. + + The name of the . + The key to use for authenticating with the Azure service. + + + var credential = new AzureNamedKeyCredential("SomeName", "SomeKey"); + (string name, string key) = credential; + + + Deconstructing tuples and other types + + + + Shared access signature credential used to authenticate to an Azure Service. + It provides the ability to update the shared access signature without creating a new client. + + + + + Shared access signature used to authenticate to an Azure service. + + + + + Initializes a new instance of the class. + + Shared access signature to use to authenticate with the Azure service. + + Thrown when the is null. + + + Thrown when the is empty. + + + + + Updates the shared access signature. + This is intended to be used when you've regenerated your shared access signature + and want to update long lived clients. + + Shared access signature to authenticate the service against. + + Thrown when the is null. + + + Thrown when the is empty. + + + + + Represents an HTTP ETag. + + + + + Creates a new instance of . + + The string value of the ETag. + + + + Compares equality of two instances. + + The to compare. + The to compare to. + true if values of both ETags are equal, otherwise false. + + + + Compares inequality of two instances. + + The to compare. + The to compare to. + true if values of both ETags are not equal, otherwise false. + + + + Instance of with the value. * + + + + Indicates whether the current object is equal to another object of the same type.An object to compare with this object. if the current object is equal to the parameter; otherwise, . + + + + Indicates whether the value of current is equal to the provided string. + An object to compare with this object. + true if the current object is equal to the other parameter; otherwise, false. + + + Indicates whether this instance and a specified object are equal.The object to compare with the current instance. if and this instance are the same type and represent the same value; otherwise, . + + + Returns the hash code for this instance.A 32-bit signed integer that is the hash code for this instance. + + + + + + The string representation of this . + + + + Returns the string representation of the . + + A format string. Valid values are "G" for standard format and "H" for header format. + The formatted string representation of this . This includes outer quotes and the W/ prefix in the case of weak ETags. + + + ETag tag = ETag.Parse("\"sometag\""); + Console.WriteLine(tag.ToString("G")); + // Displays: sometag + Console.WriteLine(tag.ToString("H")); + // Displays: "sometag" + + + + + + Defines a range of bytes within an HTTP resource, starting at an offset and + ending at offset+count-1 inclusively. + + + + + Gets the starting offset of the . + + + + + Gets the size of the . null means the range + extends all the way to the end. + + + + + Creates an instance of HttpRange. + + The starting offset of the . Defaults to 0. + The length of the range. null means to the end. + + + + Converts the specified range to a string. + + String representation of the range. + For more information, see https://docs.microsoft.com/en-us/rest/api/storageservices/specifying-the-range-header-for-file-service-operations. + + + + Check if two instances are equal. + + The first instance to compare. + The second instance to compare. + True if they're equal, false otherwise. + + + + Check if two instances are not equal. + + The first instance to compare. + The second instance to compare. + True if they're not equal, false otherwise. + + + + Check if two instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + Check if two instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + Get a hash code for the . + + Hash code for the . + + + + Represents a JSON Patch document. + + + + + Initializes a new instance of that uses as the default serializer. + + + + + Initializes a new instance of + + The instance to use for value serialization. + + + + Initializes a new instance of + + The binary representation of JSON Patch document. + + + + Initializes a new instance of using an existing UTF8-encoded JSON Patch document. + + The binary representation of JSON Patch document. + The instance to use for value serialization. + + + + Initializes a new instance of using an existing UTF8-encoded JSON Patch document. + + The path to apply the addition to. + The raw JSON value to add to the path. + + + + Appends an "add" operation to this . + + The path to apply the addition to. + The value to add to the path. + + + + Appends a "replace" operation to this . + + The path to replace. + The raw JSON value to replace with. + + + + Appends a "replace" operation to this . + + The path to replace. + The value to replace with. + + + + Appends a "copy" operation to this . + + The path to copy from. + The path to copy to. + + + + Appends a "move" operation to this . + + The path to move from. + The path to move to. + + + + Appends a "remove" operation to this . + + The path to remove. + + + + Appends a "test" operation to this . + + The path to test. + The raw JSON value to test against. + + + + Appends a "test" operation to this . + + The path to test. + The value to replace with. + + + + Returns a UTF8-encoded representation of this instance. + + The UTF8-encoded JSON. + + + + Returns a formatted JSON string representation of this . + + A formatted JSON string representation of this . + + + + Specifies HTTP options for conditional requests. + + + + + Optionally limit requests to resources that have a matching ETag. + + + + + Optionally limit requests to resources that do not match the ETag. + + + + Represents a CloudEvent conforming to the 1.0 schema. This type has built-in serialization using System.Text.Json. + + + Initializes a new instance of the class. + Identifies the context in which an event happened. The combination of id and source must be unique for each distinct event. + Type of event related to the originating occurrence. For example, "Contoso.Items.ItemReceived". + Event data specific to the event type. + The type to use when serializing the data. + If not specified, will be used on . + + or was null. + + + + Initializes a new instance of the class using binary event data. + Identifies the context in which an event happened. The combination of id and source must be unique for each distinct event. + Type of event related to the originating occurrence. For example, "Contoso.Items.ItemReceived". + Binary event data specific to the event type. + Content type of the payload. A content type different from "application/json" should be specified if payload is not JSON. + The format that the data of a should be sent in + when using the JSON envelope format. + + or was null. + + + + + Gets or sets the event data as . Using BinaryData, + one can deserialize the payload into rich data, or access the raw JSON data using . + + + + + Gets or sets an identifier for the event. The combination of and must be unique for each distinct event. + If not explicitly set, this will default to a . + + + + Gets or sets the context in which an event happened. The combination of + and must be unique for each distinct event. + + + Gets or sets the type of event related to the originating occurrence. + + + + The spec version of the cloud event. + + + + + Gets or sets the time (in UTC) the event was generated, in RFC3339 format. + If not explicitly set, this will default to the time that the event is constructed. + + + + Gets or sets the schema that the data adheres to. + + + Gets or sets the content type of the data. + + + Gets or sets the subject of the event in the context of the event producer (identified by source). + + + + Gets extension attributes that can be additionally added to the CloudEvent envelope. + + + + + Given JSON-encoded events, parses the event envelope and returns an array of CloudEvents. + If the specified event is not valid JSON an exception is thrown. + By default, if the event is missing required properties, an exception is thrown though this can be relaxed + by setting the parameter. + + An instance of containing the JSON for one or more CloudEvents. + Set to to allow missing or invalid properties to still parse into a CloudEvent. + In particular, by setting strict to , the source, id, specversion and type properties are no longer required + to be present in the JSON. Additionally, the casing requirements of the extension attribute names are relaxed. + + An array of instances. + + + + Given a single JSON-encoded event, parses the event envelope and returns a . + If the specified event is not valid JSON an exception is thrown. + By default, if the event is missing required properties, an exception is thrown though this can be relaxed + by setting the parameter. + + An instance of containing the JSON for the CloudEvent. + Set to to allow missing or invalid properties to still parse into a CloudEvent. + In particular, by setting strict to , the source, id, specversion and type properties are no longer required + to be present in the JSON. Additionally, the casing requirements of the extension attribute names are relaxed. + + A . + + contained multiple events. should be used instead. + + + + + A custom converter that attributes the type. + This allows System.Text.Json to serialize and deserialize CloudEvents by default. + + + + + Gets or sets the serializer to use for the data portion of the . If not specified, + JsonObjectSerializer is used. + + The reader.The type to convert.An object that specifies serialization options to use.The converted value. + + + Writes a specified value as JSON.The writer to write to.The value to convert to JSON.An object that specifies serialization options to use. + + + + Specifies the format that the data of a should be sent in + when using the JSON envelope format for a . + . + + + + + Indicates the should be serialized as binary data. + This data will be included as a Base64 encoded string in the "data_base64" + field of the JSON payload. + + + + + Indicates the should be serialized as JSON. + The data will be included in the "data" field of the JSON payload. + + + + + Represents a long-running operation. + + + + + Gets an ID representing the operation that can be used to poll for + the status of the long-running operation. + + + + + The last HTTP response received from the server. + + + The last response returned from the server during the lifecycle of this instance. + An instance of sends requests to a server in UpdateStatusAsync, UpdateStatus, and other methods. + Responses from these requests can be accessed using GetRawResponse. + + + + + Returns true if the long-running operation completed. + + + + + Calls the server to get updated status of the long-running operation. + + A used for the service call. + The HTTP response received from the server. + + This operation will update the value returned from GetRawResponse and might update HasCompleted, HasValue, and Value. + + + + + Calls the server to get updated status of the long-running operation. + + A used for the service call. + The HTTP response received from the server. + + This operation will update the value returned from GetRawResponse and might update HasCompleted, HasValue, and Value. + + + + + Periodically calls the server till the long-running operation completes. + + A used for the periodical service calls. + The last HTTP response received from the server. + + This method will periodically call UpdateStatusAsync till HasCompleted is true, then return the final response of the operation. + + + + + Periodically calls the server till the long-running operation completes. + + + The interval between status requests to the server. + The interval can change based on information returned from the server. + For example, the server might communicate to the client that there is not reason to poll for status change sooner than some time. + + A used for the periodical service calls. + The last HTTP response received from the server. + + This method will periodically call UpdateStatusAsync till HasCompleted is true, then return the final response of the operation. + + + + Determines whether the specified object is equal to the current object.The object to compare with the current object. if the specified object is equal to the current object; otherwise, . + + + Serves as the default hash function.A hash code for the current object. + + + Returns a string that represents the current object.A string that represents the current object. + + + + Represents a long-running operation that returns a value when it completes. + + The final result of the long-running operation. + + + + Final result of the long-running operation. + + + This property can be accessed only after the operation completes successfully (HasValue is true). + + + + + Returns true if the long-running operation completed successfully and has produced final result (accessible by Value property). + + + + + Periodically calls the server till the long-running operation completes. + + A used for the periodical service calls. + The last HTTP response received from the server. + + This method will periodically call UpdateStatusAsync till HasCompleted is true, then return the final result of the operation. + + + + + Periodically calls the server till the long-running operation completes. + + + The interval between status requests to the server. + The interval can change based on information returned from the server. + For example, the server might communicate to the client that there is not reason to poll for status change sooner than some time. + + A used for the periodical service calls. + The last HTTP response received from the server. + + This method will periodically call UpdateStatusAsync till HasCompleted is true, then return the final result of the operation. + + + + + Periodically calls the server till the long-running operation completes. + + A used for the periodical service calls. + The last HTTP response received from the server. + + This method will periodically call UpdateStatusAsync till HasCompleted is true, then return the final response of the operation. + + + + + Periodically calls the server till the long-running operation completes. + + + The interval between status requests to the server. + The interval can change based on information returned from the server. + For example, the server might communicate to the client that there is not reason to poll for status change sooner than some time. + + A used for the periodical service calls. + The last HTTP response received from the server. + + This method will periodically call UpdateStatusAsync till HasCompleted is true, then return the final response of the operation. + + + + + A single of values from a request that may return + zero or more s of values. + + The type of values. + + + + Gets the values in this . + + + + + Gets the continuation token used to request the next + . The continuation token may be null or + empty when there are no more pages. + + + + + Gets the that provided this + . + + + + + Creates a new . + + + The values in this . + + + The continuation token used to request the next . + + + The that provided this . + + + + + Creates a string representation of an . + + + A string representation of an . + + + + + Check if two instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + Get a hash code for the . + + Hash code for the . + + + + A collection of values that may take multiple service requests to + iterate over. + + The type of the values. + + + + Gets a used for requests made while + enumerating asynchronously. + + + + + Initializes a new instance of the + class for mocking. + + + + + Initializes a new instance of the + class. + + + The used for requests made while + enumerating asynchronously. + + + + + Enumerate the values a at a time. This may + make multiple service requests. + + + A continuation token indicating where to resume paging or null to + begin paging from the beginning. + + + The size of s that should be requested (from + service operations that support it). + + + An async sequence of s. + + + + + Creates a string representation of an . + + + A string representation of an . + + + + + Enumerate the values in the collection. This may make multiple service requests. + + + + + Creates an instance of using the provided pages. + + The pages of values to list as part of net new pageable instance. + A new instance of + + + + Check if two instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + Get a hash code for the . + + Hash code for the . + + + + Specifies HTTP options for conditional requests based on modification time. + + + + + Optionally limit requests to resources that have only been + modified since this point in time. + + + + + Optionally limit requests to resources that have remained + unmodified. + + + + + An exception thrown when service request fails. + + + + + Gets the HTTP status code of the response. Returns. 0 if response was not received. + + + + + Gets the service specific error code if available. Please refer to the client documentation for the list of supported error codes. + + + + Initializes a new instance of the class with a specified error message. + The message that describes the error. + + + Initializes a new instance of the class with a specified error message, HTTP status code and a reference to the inner exception that is the cause of this exception. + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + Initializes a new instance of the class with a specified error message and HTTP status code. + The HTTP status code, or 0 if not available. + The message that describes the error. + + + Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. + The HTTP status code, or 0 if not available. + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + Initializes a new instance of the class with a specified error message, HTTP status code, error code, and a reference to the inner exception that is the cause of this exception. + The HTTP status code, or 0 if not available. + The error message that explains the reason for the exception. + The service specific error code. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + Initializes a new instance of the class with serialized data.The that holds the serialized object data about the exception being thrown.The that contains contextual information about the source or destination. is .The class name is or is zero (0). + + + When overridden in a derived class, sets the with information about the exception.The that holds the serialized object data about the exception being thrown.The that contains contextual information about the source or destination.The parameter is a null reference ( in Visual Basic). + + + + Represents the HTTP response from the service. + + + + + Gets the HTTP status code. + + + + + Gets the HTTP reason phrase. + + + + + Gets the contents of HTTP response. Returns null for responses without content. + + + + + Gets the client request id that was sent to the server as x-ms-client-request-id headers. + + + + + Get the HTTP response headers. + + + + + Gets the contents of HTTP response, if it is available. + + + Throws when is not a . + + + + + Frees resources held by this instance. + + + + + Returns header value if the header is stored in the collection. If header has multiple values they are going to be joined with a comma. + + The header name. + The reference to populate with value. + true if the specified header is stored in the collection, otherwise false. + + + + Returns header values if the header is stored in the collection. + + The header name. + The reference to populate with values. + true if the specified header is stored in the collection, otherwise false. + + + + Returns true if the header is stored in the collection. + + The header name. + true if the specified header is stored in the collection, otherwise false. + + + + Returns an iterator for enumerating in the response. + + The enumerating in the response. + + + + Creates a new instance of with the provided value and HTTP response. + + The type of the value. + The value. + The HTTP response. + A new instance of with the provided value and HTTP response. + + + + Returns the string representation of this . + + The string representation of this + + + + Represents a result of Azure operation. + + The type of returned value. + + + + Returns the HTTP response returned by the service. + + The HTTP response returned by the service. + + + + Gets the value returned by the service. + + + + + Returns the value of this object. + + The instance. + + + Determines whether the specified object is equal to the current object.The object to compare with the current object. if the specified object is equal to the current object; otherwise, . + + + Serves as the default hash function.A hash code for the current object. + + + Returns a string that represents the current object.A string that represents the current object. + + + + Extensions that can be used for serialization. + + + + + Converts the to the specified type using + the provided . + + The type that the data should be + converted to. + The instance to convert. + The serializer to use + when deserializing the data. + The to use during deserialization. + The data converted to the specified type. + + + + Converts the to the specified type using + the provided . + + The type that the data should be + converted to. + The instance to convert. + The serializer to use + when deserializing the data. + The to use during deserialization. + The data converted to the specified type. + + + + Provides data for + events that can be invoked either synchronously or asynchronously. + + + + + Gets a value indicating whether the event handler was invoked + synchronously or asynchronously. Please see + for more details. + + + + The same + event can be raised from both synchronous and asynchronous code + paths depending on whether you're calling sync or async methods on + a client. If you write an async handler but raise it from a sync + method, the handler will be doing sync-over-async and may cause + ThreadPool starvation. See + + Diagnosing .NET Core ThreadPool Starvation with PerfView for + a detailed explanation of how that can cause ThreadPool starvation + and serious performance problems. + + + You can use this property to check + how the event is being raised and implement your handler + accordingly. Here's an example handler that's safe to invoke from + both sync and async code paths. + + var client = new AlarmClient(); + client.Ring += async (SyncAsyncEventArgs e) => + { + if (e.IsRunningSynchronously) + { + Console.WriteLine("Wake up!"); + } + else + { + await Console.Out.WriteLineAsync("Wake up!"); + } + }; + + client.Snooze(); // sync call that blocks + await client.SnoozeAsync(); // async call that doesn't block + + + + + + + Gets a cancellation token related to the original operation that + raised the event. It's important for your handler to pass this + token along to any asynchronous or long-running synchronous + operations that take a token so cancellation (via something like + + new CancellationTokenSource(TimeSpan.FromSeconds(10)).Token + + for example) will correctly propagate. + + + + + Initializes a new instance of the + class. + + + A value indicating whether the event handler was invoked + synchronously or asynchronously. Please see + for more details. + + + A cancellation token related to the original operation that raised + the event. It's important for your handler to pass this token + along to any asynchronous or long-running synchronous operations + that take a token so cancellation will correctly propagate. The + default value is . + + + + Specifies that null is allowed as an input even if the corresponding type disallows it. + + + Specifies that null is disallowed as an input even if the corresponding type allows it. + + + Specifies that an output may be null even if the corresponding type disallows it. + + + Specifies that an output will not be null even if the corresponding type allows it. + + + Specifies that when a method returns , the parameter may be null even if the corresponding type disallows it. + + + Initializes the attribute with the specified return value condition. + + The return value condition. If the method returns this value, the associated parameter may be null. + + + + Gets the return value condition. + + + Specifies that when a method returns , the parameter will not be null even if the corresponding type allows it. + + + Initializes the attribute with the specified return value condition. + + The return value condition. If the method returns this value, the associated parameter will not be null. + + + + Gets the return value condition. + + + Specifies that the output will be non-null if the named parameter is non-null. + + + Initializes the attribute with the associated parameter name. + + The associated parameter name. The output will be non-null if the argument to the parameter specified is non-null. + + + + Gets the associated parameter name. + + + Applied to a method that will never return under any circumstance. + + + Specifies that the method will not return if the associated Boolean parameter is passed the specified value. + + + Initializes the attribute with the specified parameter value. + + The condition parameter value. Code after the method will be considered unreachable by diagnostics if the argument to + the associated parameter matches this value. + + + + Gets the condition parameter value. + + + Returns an enumerator that iterates through a collection.An object that can be used to iterate through the collection. + + + Returns an enumerator that iterates through a collection.An object that can be used to iterate through the collection. + + + Returns an enumerator that iterates through the collection.An enumerator that can be used to iterate through the collection. + + + Returns an enumerator that iterates through a collection.An object that can be used to iterate through the collection. + + + Gets the element in the collection at the current position of the enumerator.The element in the collection at the current position of the enumerator. + + + diff --git a/app_data/jobs/triggered/utility/Azure.Storage.Blobs.dll b/app_data/jobs/triggered/utility/Azure.Storage.Blobs.dll new file mode 100644 index 0000000000000000000000000000000000000000..2fd2216f2f665232734193ff977f30fc10bd9c9a GIT binary patch literal 904080 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 z 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%0AgKelVWg{gse7_ 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

7#Tvo8)*7zi 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 z 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 z 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 AHUIzs literal 0 HcmV?d00001 diff --git a/app_data/jobs/triggered/utility/Azure.Storage.Blobs.xml b/app_data/jobs/triggered/utility/Azure.Storage.Blobs.xml new file mode 100644 index 000000000..cfd2e3225 --- /dev/null +++ b/app_data/jobs/triggered/utility/Azure.Storage.Blobs.xml @@ -0,0 +1,23111 @@ + + + + Azure.Storage.Blobs + + + +

+ The allows you to manipulate Azure + Storage append blobs. + + An append blob is comprised of blocks and is optimized for append + operations. When you modify an append blob, blocks are added to the + end of the blob only, via the + operation. Updating or deleting of existing blocks is not supported. + Unlike a block blob, an append blob does not expose its block IDs. + + Each block in an append blob can be a different size, up to a maximum + of 4 MB, and an append blob can include up to 50,000 blocks. The + maximum size of an append blob is therefore slightly more than 195 GB + (4 MB X 50,000 blocks). + + + + + Gets the maximum number of bytes that can be sent in a call + to AppendBlock. + + + + + Gets the maximum number of blocks allowed in an append blob. + + + + + Initializes a new instance of the + class for mocking. + + + + + Initializes a new instance of the + class. + + + A connection string includes the authentication information + required for your application to access data in an Azure Storage + account at runtime. + + For more information, Configure Azure Storage connection strings + + + The name of the container containing this append blob. + + + The name of this append blob. + + + + + Initializes a new instance of the + class. + + + A connection string includes the authentication information + required for your application to access data in an Azure Storage + account at runtime. + + For more information, Configure Azure Storage connection strings + + + The name of the container containing this append blob. + + + The name of this append blob. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the append blob that includes the + name of the account, the name of the container, and the name of + the blob. + This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}". + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the append blob that includes the + name of the account, the name of the container, and the name of + the blob. + This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}". + + + The shared key credential used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the append blob that includes the + name of the account, the name of the container, and the name of + the blob. + This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}". + Must not contain shared access signature, which should be passed in the second parameter. + + + The shared access signature credential used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + This constructor should only be used when shared access signature needs to be updated during lifespan of this client. + + + + + Initializes a new instance of the + class. + + + A referencing the append blob that includes the + name of the account, the name of the container, and the name of + the blob. + This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}". + + + The token credential used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the append blob that includes the + name of the account, the name of the container, and the name of + the blob. + This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}". + + + The transport pipeline used to send every request. + + + The version of the service to use when sending requests. + + + The shared key credential used to sign requests. + + Client diagnostics. + Customer provided key. + Encryption scope. + + + + Initializes a new instance of the + class with an identical source but the specified + timestamp. + + For more information, see + + Create a snapshot of a blob. + + The snapshot identifier. + A new instance. + + Pass null or empty string to remove the snapshot returning a URL + to the base blob. + + + + + Initializes a new instance of the + class with an identical source but the specified + timestamp. + + + The version identifier. + A new instance. + + Pass null or empty string to remove the version returning a URL + to the base blob. + + + + + The + operation creates a new 0-length append blob. The content of any existing + blob is overwritten with the newly initialized append blob. To add content + to the append blob, call the operation. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + newly created append blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new 0-length append blob. The content of any existing + blob is overwritten with the newly initialized append blob. To add content + to the append blob, call the operation. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + newly created append blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new 0-length append blob. The content of any existing blob is overwritten with + the newly initialized append blob. To add content to the append + blob, call the operation. + + For more information, see + + Put Blob. + + + Optional standard HTTP header properties that can be set for the + new append blob. + + + Optional custom metadata to set for this append blob. + + + Optional to add + conditions on the creation of this new append blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + newly created append blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new 0-length append blob. The content of any existing blob is overwritten with + the newly initialized append blob. To add content to the append + blob, call the operation. + + For more information, see + + Put Blob. + + + Optional standard HTTP header properties that can be set for the + new append blob. + + + Optional custom metadata to set for this append blob. + + + Optional to add + conditions on the creation of this new append blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + newly created append blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new 0-length append blob. If the append blob already exists, + the content of the existing append blob will remain unchanged. To add content to + the append blob, call the operation. + + For more information, see + + Put Blob. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + If the append blob does not already exist, a + describing the newly created append blob. Otherwise, null. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new 0-length append blob. If the append blob already exists, + the content of the existing append blob will remain unchanged. To add content to + the append blob, call the operation. + + For more information, see + + Put Blob. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + If the append blob does not already exist, a + describing the newly created append blob. Otherwise, null. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new 0-length append blob. If the append blob already exists, + the content of the existing append blob will remain unchanged. To add content to + the append blob, call the operation. + + For more information, see + + Put Blob. + + + Optional standard HTTP header properties that can be set for the + new append blob. + + + Optional custom metadata to set for this append blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + If the append blob does not already exist, a + describing the newly created append blob. Otherwise, null. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new 0-length append blob. If the append blob already exists, + the content of the existing append blob will remain unchanged. To add content to the append + blob, call the operation. + + For more information, see + + Put Blob. + + + Optional standard HTTP header properties that can be set for the + new append blob. + + + Optional custom metadata to set for this append blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + If the append blob does not already exist, a + describing the newly created append blob. Otherwise, null. + + + A will be thrown if + a failure occurs. + + + + + The operation commits a new block + of data, represented by the , + to the end of the existing append blob. The + operation is only permitted if the blob was created as an append + blob. + + For more information, see + + Append Block. + + + A containing the content of the block to + append. + + + Optional MD5 hash of the block content. This hash is used to + verify the integrity of the block during transport. When this hash + is specified, the storage service compares the hash of the content + that has arrived with this value. Note that this MD5 hash is not + stored with the blob. If the two hashes do not match, the + operation will fail with a . + + + Optional to add + conditions on appending content to this append blob. + + + Optional to provide + progress updates about data transfers. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated append blob. + + + A will be thrown if + a failure occurs. + + + + + The operation commits a new block + of data, represented by the , + to the end of the existing append blob. The + operation is only permitted if the blob was created as an append + blob. + + For more information, see + + Append Block. + + + A containing the content of the block to + append. + + + Optional MD5 hash of the block content. This hash is used to + verify the integrity of the block during transport. When this hash + is specified, the storage service compares the hash of the content + that has arrived with this value. Note that this MD5 hash is not + stored with the blob. If the two hashes do not match, the + operation will fail with a . + + + Optional to add + conditions on appending content to this append blob. + + + Optional to provide + progress updates about data transfers. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated append blob. + + + A will be thrown if + a failure occurs. + + + + + The operation commits a new block + of data, represented by the , + to the end of the existing append blob. The + operation is only permitted if the blob was created as an append + blob. + + For more information, see + + Append Block. + + + A containing the content of the block to + append. + + + Optional MD5 hash of the block content. This hash is used to + verify the integrity of the block during transport. When this hash + is specified, the storage service compares the hash of the content + that has arrived with this value. Note that this MD5 hash is not + stored with the blob. If the two hashes do not match, the + operation will fail with a . + + + Optional to add + conditions on appending content to this append blob. + + + Optional to provide + progress updates about data transfers. + + + Whether to invoke the operation asynchronously. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated append blob. + + + A will be thrown if + a failure occurs. + + + + + The operation commits a new + block of data, represented by the , + to the end of the existing append blob. The + operation is only permitted + if the blob was created as an append blob. + + For more information, see + + Append Block From URL. + + + Specifies the of the source blob. The value may + be a of up to 2 KB in length that specifies a + blob. The source blob must either be public or must be + authenticated via a shared access signature. If the source blob + is public, no authentication is required to perform the operation. + + + Optionally only upload the bytes of the blob in the + in the specified range. If this is + not specified, the entire source blob contents are uploaded as a + single append block. + + + Optional MD5 hash of the append block content from the + . This hash is used to verify the + integrity of the block during transport of the data from the Uri. + When this hash is specified, the storage service compares the hash + of the content that has arrived from the + with this value. Note that this md5 hash is not stored with the + blob. If the two hashes do not match, the operation will fail + with a . + + + Optional to add + conditions on the copying of data to this append blob. + + + Optional to add + conditions on the copying of data from this source blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated append blob. + + + A will be thrown if + a failure occurs. + + + + + The operation commits a new + block of data, represented by the , + to the end of the existing append blob. The + operation is only permitted + if the blob was created as an append blob. + + For more information, see + + Append Block From URL. + + + Specifies the of the source blob. The value may + be a of up to 2 KB in length that specifies a + blob. The source blob must either be public or must be + authenticated via a shared access signature. If the source blob + is public, no authentication is required to perform the operation. + + + Optionally only upload the bytes of the blob in the + in the specified range. If this is + not specified, the entire source blob contents are uploaded as a + single append block. + + + Optional MD5 hash of the append block content from the + . This hash is used to verify the + integrity of the block during transport of the data from the Uri. + When this hash is specified, the storage service compares the hash + of the content that has arrived from the + with this value. Note that this md5 hash is not stored with the + blob. If the two hashes do not match, the operation will fail + with a . + + + Optional to add + conditions on the copying of data to this append blob. + + + Optional to add + conditions on the copying of data from this source blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated append blob. + + + A will be thrown if + a failure occurs. + + + + + Seals the append blob, making it read only. + Any subsequent appends will fail. + + + Optional to add + conditions on the sealing of this blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the sealed append blob. + + + A will be thrown if + a failure occurs. + + + + + Seals the append blob, making it read only. + Any subsequent appends will fail. + + + Optional to add + conditions on the sealing of this blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the sealed append blob. + + + A will be thrown if + a failure occurs. + + + + + Opens a stream for writing to the blob. + + + Whether an existing blob should be deleted and recreated. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A stream to write to the Append Blob. + + + A will be thrown if + a failure occurs. + + + + + Opens a stream for writing to the blob. + + + Whether an existing blob should be deleted and recreated. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A stream to write to the Append Blob. + + + A will be thrown if + a failure occurs. + + + + + Add easy to discover methods to for + creating instances. + + + Add easy to discover methods to for + creating instances. + + + Add easy to discover methods to for + creating instances. + + + Add easy to discover methods to and + for easily creating + instances. + + + Add easy to discover methods to for + creating instances. + + + Add easy to discover methods to for + creating instances. + + + + + Create a new object by + concatenating to + the end of the 's + . The new + + uses the same request policy pipeline as the + . + + The . + The name of the append blob. + A new instance. + + + + Create a new that pointing to this 's parent container. + The new + uses the same request policy pipeline as the + . + + The . + A new instance. + + + + Create a new object by concatenating + to the end of the + 's . + The new uses the same request policy + pipeline as the . + + The . + The name of the blob. + A new instance. + + + + Creates a new instance of the class, maintaining all the same + internals but specifying new . + + Client to base off of. + New encryption options. Setting this to default will clear client-side encryption. + New instance with provided options and same internals otherwise. + + + + Create a new that pointing to this 's blob service. + The new + uses the same request policy pipeline as the + . + + A new instance. + + + + Initializes a new instance of the class. + + + A representing the blob being leased. + + + An optional lease ID. If no lease ID is provided, a random lease + ID will be created. + + + + + Initializes a new instance of the class. + + + A representing the container + being leased. + + + An optional lease ID. If no lease ID is provided, a random lease + ID will be created. + + + + + Create a new object by + concatenating to + the end of the 's + . The new + + uses the same request policy pipeline as the + . + + The . + The name of the block blob. + A new instance. + + + + Create a new object by + concatenating to + the end of the 's + . The new + + uses the same request policy pipeline as the + . + + The . + The name of the page blob. + A new instance. + + + + The allows you to manipulate Azure Storage + blobs. + + + + + Gets the blob's primary endpoint. + + + + + The transport pipeline used to send + every request. + + + + + The version of the service to use when sending requests. + + + + + The instance used to create diagnostic scopes + every request. + + + + + The to be used when sending requests. + + + + + The to be used when sending requests. + + + + + The to be used when sending/receiving requests. + + + + + The name of the Encryption Scope to be used when sending requests. + + + + + The name of the Encryption Scope to be used when sending requests. + + + + + Gets the Storage account name corresponding to the blob client. + + + + + Gets the container name corresponding to the blob client. + + + + + Gets the name of the blob. + + + + + Gets the The used to authenticate and generate SAS. + + + + + Determines whether the client is able to generate a SAS. + If the client is authenticated with a . + + + + + Initializes a new instance of the + class. + + + + + Initializes a new instance of the + class. + + + A connection string includes the authentication information + required for your application to access data in an Azure Storage + account at runtime. + + For more information, + + Configure Azure Storage connection strings + + + The name of the container containing this blob. + + + The name of this blob. + + + + + Initializes a new instance of the + class. + + + A connection string includes the authentication information + required for your application to access data in an Azure Storage + account at runtime. + + For more information, + + Configure Azure Storage connection strings + + + The name of the container containing this blob. + + + The name of this blob. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the blob that includes the + name of the account, the name of the container, and the name of + the blob. + This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}". + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the blob that includes the + name of the account, the name of the container, and the name of + the blob. + This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}". + + + The shared key credential used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the blob that includes the + name of the account, the name of the container, and the name of + the blob. + This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}". + Must not contain shared access signature, which should be passed in the second parameter. + + + The shared access signature credential used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + This constructor should only be used when shared access signature needs to be updated during lifespan of this client. + + + + + Initializes a new instance of the + class. + + + A referencing the blob that includes the + name of the account, the name of the container, and the name of + the blob. + This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}". + + + The token credential used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the blob that includes the + name of the account, the name of the container, and the name of + the blob. + This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}". + + + An optional authentication policy used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + The shared key credential used to sign requests. + + + + + Initializes a new instance of the + class. + + + A referencing the blob that includes the + name of the account, the name of the container, and the name of + the blob. + This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}". + + + The transport pipeline used to send every request. + + + The version of the service to use when sending requests. + + + The shared key credential used to sign requests. + + Client diagnostics. + Customer provided key. + Client-side encryption options. + Encryption scope. + + + + Initializes a new instance of the + class with an identical source but the specified + timestamp. + + For more information, see + + Create a snapshot of a blob. + + The snapshot identifier. + A new instance. + + Pass null or empty string to remove the snapshot returning a URL + to the base blob. + + + + + Creates a new instance of the class + with an identical source but the specified + timestamp. + + The snapshot identifier. + A new instance. + + + + Initializes a new instance of the + class with an identical source but the specified + timestamp. + + + The version identifier. + A new instance. + + Pass null or empty string to remove the version returning a URL + to the base blob. + + + + + Creates a new instance of the class + with an identical source but the specified + timestamp. + + The version identifier. + A new instance. + + + + Initializes a new instance of the class. + + + An optional lease ID. If no lease ID is provided, a random lease + ID will be created. + + + + + The operation downloads a blob from + the service, including its metadata and properties. + + For more information, see + + Get Blob. + + + A describing the + downloaded blob. contains + the blob's data. + + + A will be thrown if + a failure occurs. + + + + + The operation downloads a blob from + the service, including its metadata and properties. + + For more information, see + + Get Blob. + + + A describing the + downloaded blob. contains + the blob's data. + + + A will be thrown if + a failure occurs. + + + + + The operation downloads + a blob from the service, including its metadata and properties. + + For more information, see + + Get Blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + downloaded blob. contains + the blob's data. + + + A will be thrown if + a failure occurs. + + + + + The operation + downloads a blob from the service, including its metadata and + properties. + + For more information, see + + Get Blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + downloaded blob. contains + the blob's data. + + + A will be thrown if + a failure occurs. + + + + + The + operation downloads a blob from the service, including its metadata + and properties. + + For more information, see + + Get Blob. + + + If provided, only download the bytes of the blob in the specified + range. If not provided, download the entire blob. + + + Optional to add conditions on + downloading this blob. + + + When set to true and specified together with the , + the service returns the MD5 hash for the range, as long as the + range is less than or equal to 4 MB in size. If this value is + specified without or set to true when the + range exceeds 4 MB in size, a + is thrown. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + downloaded blob. contains + the blob's data. + + + A will be thrown if + a failure occurs. + + + + + The + operation downloads a blob from the service, including its metadata + and properties. + + For more information, see + + Get Blob. + + + If provided, only download the bytes of the blob in the specified + range. If not provided, download the entire blob. + + + Optional to add conditions on + downloading this blob. + + + When set to true and specified together with the , + the service returns the MD5 hash for the range, as long as the + range is less than or equal to 4 MB in size. If this value is + specified without or set to true when the + range exceeds 4 MB in size, a + is thrown. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + downloaded blob. contains + the blob's data. + + + A will be thrown if + a failure occurs. + + + + + The operation downloads a blob using parallel requests, + and writes the content to . + + + A to write the downloaded content to. + + + A describing the operation. + + + A will be thrown if + a failure occurs. + + + + + The operation downloads a blob using parallel requests, + and writes the content to . + + + A file path to write the downloaded content to. + + + A describing the operation. + + + A will be thrown if + a failure occurs. + + + + + The downloads a blob using parallel requests, + and writes the content to . + + + A to write the downloaded content to. + + + A describing the operation. + + + A will be thrown if + a failure occurs. + + + + + The downloads a blob using parallel requests, + and writes the content to . + + + A file path to write the downloaded content to. + + + A describing the operation. + + + A will be thrown if + a failure occurs. + + + + + The operation + downloads a blob using parallel requests, + and writes the content to . + + + A to write the downloaded content to. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the operation. + + + A will be thrown if + a failure occurs. + + + + + The operation + downloads a blob using parallel requests, + and writes the content to . + + + A file path to write the downloaded content to. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the operation. + + + A will be thrown if + a failure occurs. + + + + + The operation + downloads a blob using parallel requests, + and writes the content to . + + + A to write the downloaded content to. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the operation. + + + A will be thrown if + a failure occurs. + + + + + The operation + downloads a blob using parallel requests, + and writes the content to . + + + A file path to write the downloaded content to. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the operation. + + + A will be thrown if + a failure occurs. + + + + + The + operation downloads a blob using parallel requests, + and writes the content to . + + + A to write the downloaded content to. + + + Optional to add conditions on + the creation of this new block blob. + + + Optional to configure + parallel transfer behavior. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the operation. + + + A will be thrown if + a failure occurs. + + + + + The + operation downloads a blob using parallel requests, + and writes the content to . + + + A file path to write the downloaded content to. + + + Optional to add conditions on + the creation of this new block blob. + + + Optional to configure + parallel transfer behavior. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the operation. + + + A will be thrown if + a failure occurs. + + + + + The + operation downloads a blob using parallel requests, + and writes the content to . + + + A to write the downloaded content to. + + + Optional to add conditions on + the creation of this new block blob. + + + Optional to configure + parallel transfer behavior. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the operation. + + + A will be thrown if + a failure occurs. + + + + + The + operation downloads a blob using parallel requests, + and writes the content to . + + + A file path to write the downloaded content to. + + + Optional to add conditions on + the creation of this new block blob. + + + Optional to configure + parallel transfer behavior. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the operation. + + + A will be thrown if + a failure occurs. + + + + + This operation will download a blob of arbitrary size by downloading it as individually staged + partitions if it's larger than the + MaximumTransferLength. + + + A to write the downloaded content to. + + + Optional to add conditions on + the creation of this new block blob. + + + Optional to configure + parallel transfer behavior. + + + Whether to invoke the operation asynchronously. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the operation. + + + A will be thrown if + a failure occurs. + + + + + Opens a stream for reading from the blob. The stream will only download + the blob as the stream is read from. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + Returns a stream that will download the blob as the stream + is read from. + + + + + Opens a stream for reading from the blob. The stream will only download + the blob as the stream is read from. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + Returns a stream that will download the blob as the stream + is read from. + + + + + Opens a stream for reading from the blob. The stream will only download + the blob as the stream is read from. + + + The position within the blob to begin the stream. + Defaults to the beginning of the blob. + + + The buffer size to use when the stream downloads parts + of the blob. Defaults to 1 MB. + + + Optional to add conditions on + the download of the blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + Returns a stream that will download the blob as the stream + is read from. + + + + + Opens a stream for reading from the blob. The stream will only download + the blob as the stream is read from. + + + If true, you can continue streaming a blob even if it has been modified. + + + The position within the blob to begin the stream. + Defaults to the beginning of the blob. + + + The buffer size to use when the stream downloads parts + of the blob. Defaults to 1 MB. + + + Optional to propagate + notifications that the operation should be cancelled. + + + Returns a stream that will download the blob as the stream + is read from. + + + + + Opens a stream for reading from the blob. The stream will only download + the blob as the stream is read from. + + + The position within the blob to begin the stream. + Defaults to the beginning of the blob. + + + The buffer size to use when the stream downloads parts + of the blob. Defaults to 1 MB. + + + Optional to add conditions on + the download of the blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + Returns a stream that will download the blob as the stream + is read from. + + + + + Opens a stream for reading from the blob. The stream will only download + the blob as the stream is read from. + + + If true, you can continue streaming a blob even if it has been modified. + + + The position within the blob to begin the stream. + Defaults to the beginning of the blob. + + + The buffer size to use when the stream downloads parts + of the blob. Defaults to 1 MB. + + + Optional to propagate + notifications that the operation should be cancelled. + + + Returns a stream that will download the blob as the stream + is read from. + + + + + Opens a stream for reading from the blob. The stream will only download + the blob as the stream is read from. + + + The position within the blob to begin the stream. + Defaults to the beginning of the blob. + + + The buffer size to use when the stream downloads parts + of the blob. Defaults to 1 MB. + + + Optional to add conditions on + the download of the blob. + + + Whether to invoke the operation asynchronously. + + + Optional to propagate + notifications that the operation should be cancelled. + + + Returns a stream that will download the blob as the stream + is read from. + + + + + The + operation begins an asynchronous copy of the data from the to this blob. + You can check the + returned from the to determine if the + copy has completed. + + For more information, see + + Copy Blob. + + + Specifies the of the source blob. The value may + be a of up to 2 KB in length that specifies a + blob. A source blob in the same storage account can be + authenticated via Shared Key. However, if the source is a blob in + another account, the source blob must either be public or must be + authenticated via a shared access signature. If the source blob + is public, no authentication is required to perform the copy + operation. + + The source object may be a file in the Azure File service. If the + source object is a file that is to be copied to a blob, then the + source file must be authenticated using a shared access signature, + whether it resides in the same account or in a different account. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the copy operation. + + + A will be thrown if + a failure occurs. + + + + + The + operation begins an asynchronous copy of the data from the to this blob. + You can check the + returned from the to determine if the + copy has completed. + + For more information, see + + Copy Blob. + + + Specifies the of the source blob. The value may + be a of up to 2 KB in length that specifies a + blob. A source blob in the same storage account can be + authenticated via Shared Key. However, if the source is a blob in + another account, the source blob must either be public or must be + authenticated via a shared access signature. If the source blob + is public, no authentication is required to perform the copy + operation. + + The source object may be a file in the Azure File service. If the + source object is a file that is to be copied to a blob, then the + source file must be authenticated using a shared access signature, + whether it resides in the same account or in a different account. + + + Optional custom metadata to set for this blob. + + + Optional + Indicates the tier to be set on the blob. + + + Optional to add + conditions on the copying of data from this source blob. + + + Optional to add conditions on + the copying of data to this blob. + + + Optional + Indicates the priority with which to rehydrate an archived blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the copy operation. + + + A will be thrown if + a failure occurs. + + + + + The + operation begins an asynchronous copy of the data from the + to this blob. You can check the + returned from the to determine if + the copy has completed. + + For more information, see + + Copy Blob. + + + Specifies the of the source blob. The value may + be a of up to 2 KB in length that specifies a + blob. A source blob in the same storage account can be + authenticated via Shared Key. However, if the source is a blob in + another account, the source blob must either be public or must be + authenticated via a shared access signature. If the source blob + is public, no authentication is required to perform the copy + operation. + + The source object may be a file in the Azure File service. If the + source object is a file that is to be copied to a blob, then the + source file must be authenticated using a shared access signature, + whether it resides in the same account or in a different account. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the copy operation. + + + A will be thrown if + a failure occurs. + + + + + The + operation begins an asynchronous copy of the data from the + to this blob.You can check the + returned from the to determine if + the copy has completed. + + For more information, see + + Copy Blob. + + + Specifies the of the source blob. The value may + be a of up to 2 KB in length that specifies a + blob. A source blob in the same storage account can be + authenticated via Shared Key. However, if the source is a blob in + another account, the source blob must either be public or must be + authenticated via a shared access signature. If the source blob + is public, no authentication is required to perform the copy + operation. + + The source object may be a file in the Azure File service. If the + source object is a file that is to be copied to a blob, then the + source file must be authenticated using a shared access signature, + whether it resides in the same account or in a different account. + + + Optional custom metadata to set for this blob. + + + Optional + Indicates the tier to be set on the blob. + + + Optional to add + conditions on the copying of data from this source blob. + + + Optional to add conditions on + the copying of data to this blob. + + + Optional + Indicates the priority with which to rehydrate an archived blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the copy operation. + + + A will be thrown if + a failure occurs. + + + + + The operation aborts a pending + , and leaves a this + blob with zero length and full metadata. + + For more information, see + + Abort Copy Blob. + + + ID of the copy operation to abort. + + + Optional to add + conditions on aborting the copy operation. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A on successfully aborting. + + + A will be thrown if + a failure occurs. + + + + + The operation aborts a pending + , and leaves a this + blob with zero length and full metadata. + + For more information, see + + Abort Copy Blob. + + + ID of the copy operation to abort. + + + Optional to add + conditions on aborting the copy operation. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A on successfully aborting. + + + A will be thrown if + a failure occurs. + + + + + The Copy Blob From URL operation copies a blob to a destination within the storage account synchronously + for source blob sizes up to 256 MB. This API is available starting in version 2018-03-28. + The source for a Copy Blob From URL operation can be any committed block blob in any Azure storage account + which is either public or authorized with a shared access signature. + + The size of the source blob can be a maximum length of up to 256 MB. + + For more information, see + + Copy Blob From URL. + + + Required. Specifies the URL of the source blob. The value may be a URL of up to 2 KB in length + that specifies a blob. The value should be URL-encoded as it would appear in a request URI. The + source blob must either be public or must be authorized via a shared access signature. If the + source blob is public, no authorization is required to perform the operation. If the size of the + source blob is greater than 256 MB, the request will fail with 409 (Conflict). The blob type of + the source blob has to be block blob. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the copy operation. + + + A will be thrown if + a failure occurs. + + + + + The Copy Blob From URL operation copies a blob to a destination within the storage account synchronously + for source blob sizes up to 256 MB. This API is available starting in version 2018-03-28. + The source for a Copy Blob From URL operation can be any committed block blob in any Azure storage account + which is either public or authorized with a shared access signature. + + The size of the source blob can be a maximum length of up to 256 MB. + + For more information, see + + Copy Blob From URL. + + + Required. Specifies the URL of the source blob. The value may be a URL of up to 2 KB in length + that specifies a blob. The value should be URL-encoded as it would appear in a request URI. The + source blob must either be public or must be authorized via a shared access signature. If the + source blob is public, no authorization is required to perform the operation. If the size of the + source blob is greater than 256 MB, the request will fail with 409 (Conflict). The blob type of + the source blob has to be block blob. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the copy operation. + + + A will be thrown if + a failure occurs. + + + + + The operation marks the specified blob + or snapshot for deletion. The blob is later deleted during + garbage collection. + + Note that in order to delete a blob, you must delete all of its + snapshots. You can delete both at the same time using + . + + For more information, see + + Delete Blob. + + + Specifies options for deleting blob snapshots. + + + Optional to add conditions on + deleting this blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A on successfully deleting. + + + A will be thrown if + a failure occurs. + + + + + The operation marks the specified blob + or snapshot for deletion. The blob is later deleted during + garbage collection. + + Note that in order to delete a blob, you must delete all of its + snapshots. You can delete both at the same time using + . + + For more information, see + + Delete Blob. + + + Specifies options for deleting blob snapshots. + + + Optional to add conditions on + deleting this blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A on successfully deleting. + + + A will be thrown if + a failure occurs. + + + + + The operation marks the specified blob + or snapshot for deletion, if the blob exists. The blob is later deleted + during garbage collection. + + Note that in order to delete a blob, you must delete all of its + snapshots. You can delete both at the same time using + . + + For more information, see + + Delete Blob. + + + Specifies options for deleting blob snapshots. + + + Optional to add conditions on + deleting this blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A Returns true if blob exists and was + deleted, return false otherwise. + + + A will be thrown if + a failure occurs. + + + + + The operation marks the specified blob + or snapshot for deletion, if the blob exists. The blob is later deleted + during garbage collection. + + Note that in order to delete a blob, you must delete all of its + snapshots. You can delete both at the same time using + . + + For more information, see + + Delete Blob. + + + Specifies options for deleting blob snapshots. + + + Optional to add conditions on + deleting this blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A Returns true if blob exists and was + deleted, return false otherwise. + + + A will be thrown if + a failure occurs. + + + + + The operation marks the specified blob + or snapshot for deletion, if the blob exists. The blob is later deleted + during garbage collection. + + Note that in order to delete a blob, you must delete all of its + snapshots. You can delete both at the same time using + . + + For more information, see + + Delete Blob. + + + Specifies options for deleting blob snapshots. + + + Optional to add conditions on + deleting this blob. + + + Whether to invoke the operation asynchronously. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A on successfully deleting. + + + A will be thrown if + a failure occurs. + + + + + The operation can be called on a + to see if the associated blob + exists in the container on the storage account in the + storage service. + + + Optional to propagate + notifications that the operation should be cancelled. + + + Returns true if the blob exists. + + + A will be thrown if + a failure occurs. + + + + + The operation can be called on a + to see if the associated blob + exists in the container on the storage account in the storage service. + + + Optional to propagate + notifications that the operation should be cancelled. + + + Returns true if the blob exists. + + + A will be thrown if + a failure occurs. + + + + + The operation restores the contents + and metadata of a soft deleted blob and any associated soft + deleted snapshots. + + For more information, see + + Undelete Blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A on successfully deleting. + + + A will be thrown if + a failure occurs. + + + + + The operation restores the contents + and metadata of a soft deleted blob and any associated soft + deleted snapshots. + + For more information, see + + Undelete Blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A on successfully deleting. + + + A will be thrown if + a failure occurs. + + + + + The operation returns all + user-defined metadata, standard HTTP properties, and system + properties for the blob. It does not return the content of the + blob. + + For more information, see + + Get Blob Properties. + + + Optional to add + conditions on getting the blob's properties. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + blob's properties. + + + A will be thrown if + a failure occurs. + + + + + The operation returns all + user-defined metadata, standard HTTP properties, and system + properties for the blob. It does not return the content of the + blob. + + For more information, see + + Get Blob Properties. + + + Optional to add + conditions on getting the blob's properties. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + blob's properties. + + + A will be thrown if + a failure occurs. + + + + + The operation returns all + user-defined metadata, standard HTTP properties, and system + properties for the blob. It does not return the content of the + blob. + + For more information, see + + Get Blob Properties. + + + Optional to add + conditions on getting the blob's properties. + + + Whether to invoke the operation asynchronously. + + + Optional to propagate + notifications that the operation should be cancelled. + + + The name of the calling operation. + + + A describing the + blob's properties. + + + A will be thrown if + a failure occurs. + + + + + The operation sets system + properties on the blob. + + For more information, see + + Set Blob Properties. + + + Optional. The standard HTTP header system properties to set. + If not specified, existing values will be cleared. + + + Optional to add conditions on + setting the blob's HTTP headers. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the updated + blob. + + + A will be thrown if + a failure occurs. + + + + + The operation sets system + properties on the blob. + + For more information, see + + Set Blob Properties. + + + Optional. The standard HTTP header system properties to set. If not specified, existing values will be cleared. + + + Optional to add conditions on + setting the blob's HTTP headers. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the updated + blob. + + + A will be thrown if + a failure occurs. + + + + + The operation sets user-defined + metadata for the specified blob as one or more name-value pairs. + + For more information, see + + Set Blob Metadata. + + + Custom metadata to set for this blob. + + + Optional to add conditions on + setting the blob's metadata. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the updated + blob. + + + A will be thrown if + a failure occurs. + + + + + The operation sets user-defined + metadata for the specified blob as one or more name-value pairs. + + For more information, see + + Set Blob Metadata. + + + Custom metadata to set for this blob. + + + Optional to add conditions on + setting the blob's metadata. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the updated + blob. + + + A will be thrown if + a failure occurs. + + + + + The operation creates a + read-only snapshot of a blob. + + For more information, see + + Snapshot Blob. + + + Optional custom metadata to set for this blob snapshot. + + + Optional to add conditions on + setting creating this snapshot. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + new blob snapshot. + + + A will be thrown if + a failure occurs. + + + + + The operation creates a + read-only snapshot of a blob. + + For more information, see + + Snapshot Blob. + + + Optional custom metadata to set for this blob snapshot. + + + Optional to add conditions on + setting creating this snapshot. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + new blob snapshot. + + + A will be thrown if + a failure occurs. + + + + + The operation sets the tier on a blob. + The operation is allowed on a page blob in a premium storage + account and on a block blob in a blob storage or general purpose + v2 account. + + A premium page blob's tier determines the allowed size, IOPS, and + bandwidth of the blob. A block blob's tier determines + Hot/Cool/Archive storage type. This operation does not update the + blob's ETag. For detailed information about block blob level + tiering + Blob Storage Tiers. + + For more information about setting the tier, see + + Blob Storage Tiers. + + + Indicates the tier to be set on the blob. + + + Optional to add conditions on + setting the access tier. + + + Optional + Indicates the priority with which to rehydrate an archived blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A on successfully setting the tier. + + + A will be thrown if + a failure occurs. + + + + + The operation sets the tier on a blob. + The operation is allowed on a page blob in a premium storage + account and on a block blob in a blob storage or general purpose + v2 account. + + A premium page blob's tier determines the allowed size, IOPS, and + bandwidth of the blob. A block blob's tier determines + Hot/Cool/Archive storage type. This operation does not update the + blob's ETag. For detailed information about block blob level + tiering + Blob Storage Tiers. + + For more information about setting the tier, see + + Blob Storage Tiers. + + + Indicates the tier to be set on the blob. + + + Optional to add conditions on + setting the access tier. + + + Optional + Indicates the priority with which to rehydrate an archived blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A on successfully setting the tier. + + + A will be thrown if + a failure occurs. + + + + + Gets the tags associated with the underlying blob. + + For more information, see + + Get Blob Tags + + + Optional to add conditions on + getting the blob's tags. Note that TagConditions is currently the + only condition supported by GetTags. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A on successfully getting tags. + + + A will be thrown if + a failure occurs. + + + + + Gets the tags associated with the underlying blob. + + For more information, see + + Get Blob Tags + + + Optional to add conditions on + getting the blob's tags. Note that TagConditions is currently the + only condition supported by GetTags. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A on successfully getting tags. + + + A will be thrown if + a failure occurs. + + + + + Sets tags on the underlying blob. + A blob can have up to 10 tags. Tag keys must be between 1 and 128 characters. Tag values must be between 0 and 256 characters. + Valid tag key and value characters include lower and upper case letters, digits (0-9), + space (' '), plus ('+'), minus ('-'), period ('.'), foward slash ('/'), colon (':'), equals ('='), and underscore ('_'). + + For more information, see + + Set Blob Tags. + + + The tags to set on the blob. + + + Optional to add conditions on + setting the blob's tags. Note that TagConditions is currently the + only condition supported by SetTags. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A on successfully setting the blob tags.. + + + A will be thrown if + a failure occurs. + + + + + Sets tags on the underlying blob. + A blob can have up to 10 tags. Tag keys must be between 1 and 128 characters. Tag values must be between 0 and 256 characters. + Valid tag key and value characters include lower and upper case letters, digits (0-9), + space (' '), plus ('+'), minus ('-'), period ('.'), foward slash ('/'), colon (':'), equals ('='), and underscore ('_'). + + For more information, see + + Set Blob Tags. + + + The tags to set on the blob. + + + Optional to add conditions on + setting the blob's tags. Note that TagConditions is currently the + only condition supported by SetTags. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A on successfully setting the blob tags.. + + + A will be thrown if + a failure occurs. + + + + + The + returns a that generates a Blob Service + Shared Access Signature (SAS) Uri based on the Client properties and + parameters passed. The SAS is signed by the shared key credential + of the client. + + To check if the client is able to sign a Service Sas see + . + + For more information, see + + Constructing a service SAS. + + + Required. Specifies the list of permissions to be associated with the SAS. + See . + + + Required. Specifies the time at which the SAS becomes invalid. This field + must be omitted if it has been specified in an associated stored access policy. + + + A containing the SAS Uri. + + + A will be thrown if a failure occurs. + + + + + The returns a + that generates a Blob Service Shared Access Signature (SAS) Uri + based on the Client properties and and builder. The SAS is signed + by the shared key credential of the client. + + To check if the client is able to sign a Service Sas see + . + + For more information, see + + Constructing a Service SAS. + + + Used to generate a Shared Access Signature (SAS). + + + A containing the SAS Uri. + + + A will be thrown if + a failure occurs. + + + + + Create a new that pointing to this 's parent container. + The new + uses the same request policy pipeline as the + . + + A new instance. + + + + The allows you to manipulate Azure + Storage leases on containers and blobs. + + + + + Gets the to manage leases for. + + + + + Gets the to manage leases for. + + + + + Gets the URI of the object being leased. + + + + + Gets the Lease ID for this lease. + + + + + The version of the service to use when sending requests. + + + + + The instance used to create diagnostic scopes + every request. + + + + + The representing an infinite lease duration. + + + + + Initializes a new instance of the class + for mocking. + + + + + Initializes a new instance of the class. + + + A representing the blob being leased. + + + An optional lease ID. If no lease ID is provided, a random lease + ID will be created. + + + + + Initializes a new instance of the class. + + + A representing the blob container + being leased. + + + An optional lease ID. If no lease ID is provided, a random lease + ID will be created. + + + + + The operation acquires a lease on + the blob or container. The lease must + be between 15 to 60 seconds, or infinite (-1). + + If the container does not have an active lease, the Blob service + creates a lease on the blob or container and returns it. If the + container has an active lease, you can only request a new lease + using the active lease ID as , but you can + specify a new . + + For more information, see . + + + Specifies the duration of the lease, in seconds, or specify + for a lease that never expires. + A non-infinite lease can be between 15 and 60 seconds. + A lease duration cannot be changed using + or . + + + Optional to add + conditions on acquiring a lease. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the lease. + + + A will be thrown if + a failure occurs. + + + + + The operation acquires a lease on + the blob or container. The lease must + be between 15 to 60 seconds, or infinite (-1). + + If the container does not have an active lease, the Blob service + creates a lease on the blob or container and returns it. If the + container has an active lease, you can only request a new lease + using the active lease ID as , but you can + specify a new . + + For more information, see + + Lease Container. + + + Specifies the duration of the lease, in seconds, or specify + for a lease that never expires. + A non-infinite lease can be between 15 and 60 seconds. + A lease duration cannot be changed using + or . + + + Optional to add + conditions on acquiring a lease. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the lease. + + + A will be thrown if + a failure occurs. + + + + + The operation renews the blob or + container's previously-acquired lease. + + The lease can be renewed if the leaseId + matches that associated with the blob or container. Note that the] + lease may be renewed even if it has expired as long as the blob or + container has not been leased again since the expiration of that + lease. When you renew a lease, the lease duration clock resets. + + For more information, see + + Lease Container. + + + Optional to add + conditions on renewing a lease. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the lease. + + + A will be thrown if + a failure occurs. + + + + + The operation renews the blob or + container's previously-acquired lease. + + The lease can be renewed if the leaseId + matches that associated with the blob or container. Note that the] + lease may be renewed even if it has expired as long as the blob or + container has not been leased again since the expiration of that + lease. When you renew a lease, the lease duration clock resets. + + For more information, see + + Lease Container. + + + Optional to add + conditions on renewing a lease. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the lease. + + + A will be thrown if + a failure occurs. + + + + + The operation releases the + container or blob's previously-acquired lease. + + The lease may be released if the + matches that associated with the container or blob. Releasing the + lease allows another client to immediately acquire the lease for the + container or blob as soon as the release is complete. + + For more information, see + + Lease Container. + + + Optional to add + conditions on releasing a lease. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + updated blob or container. + + + A will be thrown if + a failure occurs. + + + + + The operation releases the + container or blob's previously-acquired lease. + + The lease may be released if the + matches that associated with the container or blob. Releasing the + lease allows another client to immediately acquire the lease for the + container or blob as soon as the release is complete. + + For more information, see + + Lease Container. + + + Optional to add + conditions on releasing a lease. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + updated blob or container. + + + A will be thrown if + a failure occurs. + + + + + The operation releases the + container or blob's previously-acquired lease. + + The lease may be released if the + matches that associated with the container or blob. Releasing the + lease allows another client to immediately acquire the lease for the + container or blob as soon as the release is complete. + + For more information, see + + Lease Container. + + + Optional to add + conditions on releasing a lease. + + + Whether to invoke the operation asynchronously. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + updated blob or container. + + + A will be thrown if + a failure occurs. + + + + + The operation changes the lease + of an active lease. A change must include the current + and a new . + + For more information, see + + Lease Container. + + + An optional proposed lease ID, in a GUID string format. A + will be thrown if the + proposed lease ID is not in the correct format. + + + Optional to add + conditions on changing a lease. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the lease. + + + A will be thrown if + a failure occurs. + + + + + The operation changes the lease + of an active lease. A change must include the current + and a new . + + For more information, see + + Lease Container. + + + An optional proposed lease ID, in a GUID string format. A + will be thrown if the + proposed lease ID is not in the correct format. + + + Optional to add + conditions on changing a lease. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the lease. + + + A will be thrown if + a failure occurs. + + + + + The operation breaks the blob or + container's previously-acquired lease (if it exists). + + Once a lease is broken, it cannot be renewed. Any authorized + request can break the lease; the request is not required to + specify a matching lease ID. When a lease is broken, the lease + break is allowed to elapse, + during which time no lease operation except + + and can be + performed on the blob or container. When a lease is successfully + broken, the response indicates the interval in seconds until a new + lease can be acquired. + + A lease that has been broken can also be released. A client can + immediately acquire a blob or container lease that has been + released. + + For more information, see + + Lease Container. + + + Specifies the proposed duration the lease should continue before + it is broken, in seconds, between 0 and 60. This break period is + only used if it is shorter than the time remaining on the lease. + If longer, the time remaining on the lease is used. A new lease + will not be available before the break period has expired, but the + lease may be held for longer than the break period. If this value + is not provided, a fixed-duration lease breaks after the remaining + lease period elapses, and an infinite lease breaks immediately. + + + Optional to add + conditions on breaking a lease. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the broken lease. + + + A will be thrown if + a failure occurs. + + + + + The operation breaks the blob or + container's previously-acquired lease (if it exists). + + Once a lease is broken, it cannot be renewed. Any authorized + request can break the lease; the request is not required to + specify a matching lease ID. When a lease is broken, the lease + break is allowed to elapse, + during which time no lease operation except + + and can be + performed on the blob or container. When a lease is successfully + broken, the response indicates the interval in seconds until a new + lease can be acquired. + + A lease that has been broken can also be released. A client can + immediately acquire a blob or container lease that has been + released. + + For more information, see + + Lease Container. + + + Specifies the proposed duration the lease should continue before + it is broken, in seconds, between 0 and 60. This break period is + only used if it is shorter than the time remaining on the lease. + If longer, the time remaining on the lease is used. A new lease + will not be available before the break period has expired, but the + lease may be held for longer than the break period. If this value + is not provided, a fixed-duration lease breaks after the remaining + lease period elapses, and an infinite lease breaks immediately. + + + Optional to add + conditions on breaking a lease. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the broken lease. + + + A will be thrown if + a failure occurs. + + + + + The allows you to manipulate Azure + Storage block blobs. + + Block blobs let you upload large blobs efficiently. Block blobs are + comprised of blocks, each of which is identified by a block ID. You + create or modify a block blob by writing a set of blocks and + committing them by their block IDs. Each block can be a different + size, up to a maximum of 4,000 MB (100 MB for requests using REST + versions before 2019-12-12 and 4 MB for requests using REST versions + before 2016-05-31), and a block blob can include up to 50,000 blocks. + The maximum size of a block blob is therefore approximately 190.73 TiB + (4,000 MB X 50,000 blocks). If you are writing a block blob that is + no more than 5,000 MB in size, you can upload it in its entirety with a + single write operation; see . + + When you upload a block to a blob in your storage account, it is + associated with the specified block blob, but it does not become part + of the blob until you commit a list of blocks that includes the new + block's ID. New blocks remain in an uncommitted state until they are + specifically committed or discarded. Writing a block does not update + the last modified time of an existing blob. + + Block blobs include features that help you manage large files over + networks. With a block blob, you can upload multiple blocks in + parallel to decrease upload time. Each block can include an MD5 hash + to verify the transfer, so you can track upload progress and re-send + blocks as needed.You can upload blocks in any order, and determine + their sequence in the final block list commitment step. You can also + upload a new block to replace an existing uncommitted block of the + same block ID. You have one week to commit blocks to a blob before + they are discarded. All uncommitted blocks are also discarded when a + block list commitment operation occurs but does not include them. + + You can modify an existing block blob by inserting, replacing, or + deleting existing blocks. After uploading the block or blocks that + have changed, you can commit a new version of the blob by committing + the new blocks with the existing blocks you want to keep using a + single commit operation. To insert the same range of bytes in two + different locations of the committed blob, you can commit the same + block in two places within the same commit operation.For any commit + operation, if any block is not found, the entire commitment operation + fails with an error, and the blob is not modified. Any block commitment + overwrites the blob’s existing properties and metadata, and discards + all uncommitted blocks. + + Block IDs are strings of equal length within a blob. Block client code + usually uses base-64 encoding to normalize strings into equal lengths. + When using base-64 encoding, the pre-encoded string must be 64 bytes + or less. Block ID values can be duplicated in different blobs. A + blob can have up to 100,000 uncommitted blocks, with a max total size + of appoximately 381.46 TiB (4,000 MB x 100,000 blocks) + + If you write a block for a blob that does not exist, a new block blob + is created, with a length of zero bytes. This blob will appear in + blob lists that include uncommitted blobs. If you don’t commit any + block to this blob, it and its uncommitted blocks will be discarded + one week after the last successful block upload. All uncommitted + blocks are also discarded when a new blob of the same name is created + using a single step(rather than the two-step block upload-then-commit + process). + + + + + Gets the maximum number of bytes that can be sent in a call + to . Supported value is now larger + than ; please use + . + + + + + Gets the maximum number of bytes that can be sent in a call + to . + + + + + Gets the maximum number of bytes that can be sent in a call + to . Supported value is now larger + than ; please use + . + + + + + Gets the maximum number of bytes that can be sent in a call + to . + + + + + Gets the maximum number of blocks allowed in a block blob. + + + + + Initializes a new instance of the + class for mocking. + + + + + Initializes a new instance of the + class. + + + A connection string includes the authentication information + required for your application to access data in an Azure Storage + account at runtime. + + For more information, + + Configure Azure Storage connection strings + + + The name of the container containing this block blob. + + + The name of this block blob. + + + + + Initializes a new instance of the + class. + + + A connection string includes the authentication information + required for your application to access data in an Azure Storage + account at runtime. + + For more information, + + Configure Azure Storage connection strings + + + The name of the container containing this block blob. + + + The name of this block blob. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the block blob that includes the + name of the account, the name of the container, and the name of + the blob. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the blob that includes the + name of the account, the name of the container, and the name of + the blob. + + + The shared key credential used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the blob that includes the + name of the account, the name of the container, and the name of + the blob. + Must not contain shared access signature, which should be passed in the second parameter. + + + The shared access signature credential used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + This constructor should only be used when shared access signature needs to be updated during lifespan of this client. + + + + + Initializes a new instance of the + class. + + + A referencing the blob that includes the + name of the account, the name of the container, and the name of + the blob. + + + The token credential used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the block blob that includes the + name of the account, the name of the container, and the name of + the blob. + + + The transport pipeline used to send every request. + + + The shared key credential used to sign requests. + + + The version of the service to use when sending requests. + + Client diagnostics. + Customer provided key. + Encryption scope. + + + + Initializes a new instance of the + class. + + + A referencing the block blob that includes the + name of the account, the name of the container, and the name of + the blob. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + The transport pipeline used to send every request. + + + New instanc of the class. + + + + + Initializes a new instance of the + class with an identical source but the specified + timestamp. + + For more information, see + + Create a snapshot of a blob. + + The snapshot identifier. + A new instance. + + Pass null or empty string to remove the snapshot returning a URL + to the base blob. + + + + + Initializes a new instance of the + class with an identical source but the specified + timestamp. + + + The version identifier. + A new instance. + + Pass null or empty string to remove the snapshot returning a URL + to the base blob. + + + + + Creates a new instance of the class + with an identical source but the specified + timestamp. + + The snapshot identifier. + A new instance. + + + + The + operation creates a new block blob, or updates the content of an existing block blob. + Updating an existing block blob overwrites any existing metadata on the blob. + + Partial updates are not supported with ; + the content of the existing blob is overwritten with the content + of the new blob. To perform a partial update of the content of a + block blob, use the and + operations. + + For more information, see + + Put Blob. + + + A containing the content to upload. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new block blob, or updates the content of an existing block blob. + Updating an existing block blob overwrites any existing metadata on the blob. + + Partial updates are not supported with ; + the content of the existing blob is overwritten with the content + of the new blob. To perform a partial update of the content of a + block blob, use the and + operations. + + For more information, see + + Put Blob. + + + A containing the content to upload. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new block blob, or updates the content of an existing block blob. Updating an + existing block blob overwrites any existing metadata on the blob. + + Partial updates are not supported with ; + the content of the existing blob is overwritten with the content + of the new blob. To perform a partial update of the content of a + block blob, use the and + operations. + + For more information, see + + Put Blob. + + + A containing the content to upload. + + + Optional standard HTTP header properties that can be set for the + block blob. + + + Optional custom metadata to set for this block blob. + + + Optional to add + conditions on the creation of this new block blob. + + + Optional + Indicates the tier to be set on the blob. + + + Optional to provide + progress updates about data transfers. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new block blob, or updates the content of an existing block blob. Updating an + existing block blob overwrites any existing metadata on the blob. + + Partial updates are not supported with ; + the content of the existing blob is overwritten with the content + of the new blob. To perform a partial update of the content of a + block blob, use the and + operations. + + For more information, see + + Put Blob. + + + A containing the content to upload. + + + Optional standard HTTP header properties that can be set for the + block blob. + + + Optional custom metadata to set for this block blob. + + + Optional to add + conditions on the creation of this new block blob. + + + Optional + Indicates the tier to be set on the blob. + + + Optional to provide + progress updates about data transfers. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The operation creates a new block blob, + or updates the content of an existing block blob. Updating an + existing block blob overwrites any existing metadata on the blob. + + Partial updates are not supported with ; + the content of the existing blob is overwritten with the content + of the new blob. To perform a partial update of the content of a + block blob, use the and + operations. + + For more information, see + + Put Blob. + + + A containing the content to upload. + + + Optional standard HTTP header properties that can be set for the + block blob. + + + Optional custom metadata to set for this block blob. + + + Optional tags to set for this block blob. + + + Optional to add + conditions on the creation of this new block blob. + + + Optional + Indicates the tier to be set on the blob. + + + Optional to provide + progress updates about data transfers. + + + The name of the calling operation. + + + Whether to invoke the operation asynchronously. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The operation creates a new block as + part of a block blob's "staging area" to be eventually committed + via the operation. + + For more information, see + + Put Block. + + + A valid Base64 string value that identifies the block. Prior to + encoding, the string must be less than or equal to 64 bytes in + size. + + For a given blob, the length of the value specified for the + blockid parameter must be the same size for each block. Note that + the Base64 string must be URL-encoded. + + + A containing the content to upload. + + + An optional MD5 hash of the block . + This hash is used to verify the integrity of the block during + transport. When this value is specified, the storage service + compares the hash of the content that has arrived with this value. + Note that this MD5 hash is not stored with the blob. If the two + hashes do not match, the operation will throw a + . + + + Optional to add + conditions on the upload of this block. + + + Optional to provide + progress updates about data transfers. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block. + + + A will be thrown if + a failure occurs. + + + + + The operation creates a new block as + part of a block blob's "staging area" to be eventually committed + via the operation. + + For more information, see + + Put Block. + + + A valid Base64 string value that identifies the block. Prior to + encoding, the string must be less than or equal to 64 bytes in + size. + + For a given blob, the length of the value specified for the + blockid parameter must be the same size for each block. Note that + the Base64 string must be URL-encoded. + + + A containing the content to upload. + + + An optional MD5 hash of the block . + This hash is used to verify the integrity of the block during + transport. When this value is specified, the storage service + compares the hash of the content that has arrived with this value. + Note that this MD5 hash is not stored with the blob. If the two + hashes do not match, the operation will throw a + . + + + Optional to add + conditions on the upload of this block. + + + Optional to provide + progress updates about data transfers. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block. + + + A will be thrown if + a failure occurs. + + + + + The operation creates a new block + as part of a block blob's "staging area" to be eventually committed + via the operation. + + For more information, see + + Put Block. + + + A valid Base64 string value that identifies the block. Prior to + encoding, the string must be less than or equal to 64 bytes in + size. + + For a given blob, the length of the value specified for the + blockid parameter must be the same size for each block. Note that + the Base64 string must be URL-encoded. + + + A containing the content to upload. + + + An optional MD5 hash of the block . + This hash is used to verify the integrity of the block during + transport. When this value is specified, the storage service + compares the hash of the content that has arrived with this value. + Note that this MD5 hash is not stored with the blob. If the two + hashes do not match, the operation will throw a + . + + + Optional to add + conditions on the upload of this block. + + + Optional to provide + progress updates about data transfers. + + + Whether to invoke the operation asynchronously. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block. + + + A will be thrown if + a failure occurs. + + + + + The operation creates a new + block to be committed as part of a blob where the contents are + read from the . + + For more information, see + + Put Block From URL. + + + Specifies the of the source blob. The value may + be a URL of up to 2 KB in length that specifies a blob. The + source blob must either be public or must be authenticated via a + shared access signature. If the source blob is public, no + authentication is required to perform the operation. + + + A valid Base64 string value that identifies the block. Prior to + encoding, the string must be less than or equal to 64 bytes in + size. For a given blob, the length of the value specified for + the parameter must be the same + size for each block. Note that the Base64 string must be + URL-encoded. + + + Optionally uploads only the bytes of the blob in the + in the specified range. If this is + not specified, the entire source blob contents are uploaded as a + single block. + + + Optional MD5 hash of the block content from the + . This hash is used to verify the + integrity of the block during transport of the data from the Uri. + When this hash is specified, the storage service compares the hash + of the content that has arrived from the + with this value. Note that this md5 hash is not stored with the + blob. If the two hashes do not match, the operation will fail + with a . + + + Optional to add + conditions on the copying of data from this source blob. + + + Optional to add + conditions on the staging of this block. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The operation creates a new + block to be committed as part of a blob where the contents are + read from the . + + For more information, see + + Put Block From URL. + + + Specifies the of the source blob. The value may + be a URL of up to 2 KB in length that specifies a blob. The + source blob must either be public or must be authenticated via a + shared access signature. If the source blob is public, no + authentication is required to perform the operation. + + + A valid Base64 string value that identifies the block. Prior to + encoding, the string must be less than or equal to 64 bytes in + size. For a given blob, the length of the value specified for + the parameter must be the same + size for each block. Note that the Base64 string must be + URL-encoded. + + + Optionally uploads only the bytes of the blob in the + in the specified range. If this is + not specified, the entire source blob contents are uploaded as a + single block. + + + Optional MD5 hash of the block content from the + . This hash is used to verify the + integrity of the block during transport of the data from the Uri. + When this hash is specified, the storage service compares the hash + of the content that has arrived from the + with this value. Note that this md5 hash is not stored with the + blob. If the two hashes do not match, the operation will fail + with a . + + + Optional to add + conditions on the copying of data from this source blob. + + + Optional to add + conditions on the staging of this block. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block. + + + A will be thrown if + a failure occurs. + + + + + The + operation writes a blob by specifying the list of block IDs that make up the blob. In order + to be written as part of a blob, a block must have been + successfully written to the server in a prior + operation. You can call + to update a blob by uploading only those blocks that have changed, + then committing the new and existing blocks together. You can do + this by specifying whether to commit a block from the committed + block list or from the uncommitted block list, or to commit the + most recently uploaded version of the block, whichever list it + may belong to. Any blocks not specified in the block list and + permanently deleted. + + For more information, see + + Put Block List. + + + Specify the Uncommitted Base64 encoded block IDs to indicate that + the blob service should search only the uncommitted block list for + the named blocks. If the block is not found in the uncommitted + block list, it will not be written as part of the blob, and a + will be thrown. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation writes a blob by specifying the list of block IDs that make up the blob. + In order to be written as part of a blob, a block must have been + successfully written to the server in a prior + operation. You can call + to update a blob by uploading only those blocks that have changed, + then committing the new and existing blocks together. You can do + this by specifying whether to commit a block from the committed + block list or from the uncommitted block list, or to commit the + most recently uploaded version of the block, whichever list it + may belong to. Any blocks not specified in the block list and + permanently deleted. + + For more information, see + + Put Block List. + + + Specify the Uncommitted Base64 encoded block IDs to indicate that + the blob service should search only the uncommitted block list for + the named blocks. If the block is not found in the uncommitted + block list, it will not be written as part of the blob, and a + will be thrown. + + + Optional standard HTTP header properties that can be set for the + block blob. + + + Optional custom metadata to set for this block blob. + + + Optional to add + conditions on committing this block list. + + + Optional + Indicates the tier to be set on the blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation writes a blob by specifying the list of block IDs that make up the blob. In order + to be written as part of a blob, a block must have been + successfully written to the server in a prior + operation. You can call + to update a blob by uploading only those blocks that have changed, + then committing the new and existing blocks together. You can do + this by specifying whether to commit a block from the committed + block list or from the uncommitted block list, or to commit the + most recently uploaded version of the block, whichever list it + may belong to. Any blocks not specified in the block list and + permanently deleted. + + For more information, see + + Put Block List. + + + Specify the Uncommitted Base64 encoded block IDs to indicate that + the blob service should search only the uncommitted block list for + the named blocks. If the block is not found in the uncommitted + block list, it will not be written as part of the blob, and a + will be thrown. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation writes a blob bys pecifying the list of block IDs that make up the blob. + In order to be written as part of a blob, a block must have been + successfully written to the server in a prior + operation. You can call + to update a blob by uploading only those blocks that have changed, + then committing the new and existing blocks together. You can do + this by specifying whether to commit a block from the committed + block list or from the uncommitted block list, or to commit the + most recently uploaded version of the block, whichever list it + may belong to. Any blocks not specified in the block list and + permanently deleted. + + For more information, see + + Put Block List. + + + Specify the Uncommitted Base64 encoded block IDs to indicate that + the blob service should search only the uncommitted block list for + the named blocks. If the block is not found in the uncommitted + block list, it will not be written as part of the blob, and a + will be thrown. + + + Optional standard HTTP header properties that can be set for the + block blob. + + + Optional custom metadata to set for this block blob. + + + Optional to add + conditions on committing this block list. + + + Optional + Indicates the tier to be set on the blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The operation writes a blob by + specifying the list of block IDs that make up the blob. In order + to be written as part of a blob, a block must have been + successfully written to the server in a prior + operation. You can call to + update a blob by uploading only those blocks that have changed, + then committing the new and existing blocks together. You can do + this by specifying whether to commit a block from the committed + block list or from the uncommitted block list, or to commit the + most recently uploaded version of the block, whichever list it + may belong to. Any blocks not specified in the block list and + permanently deleted. + + For more information, see + + Put Block List. + + + Specify the Uncommitted Base64 encoded block IDs to indicate that + the blob service should search only the uncommitted block list for + the named blocks. If the block is not found in the uncommitted + block list, it will not be written as part of the blob, and a + will be thrown. + + + Optional standard HTTP header properties that can be set for the + block blob. + + + Optional custom metadata to set for this block blob. + + + Optional tags to set for this block blob. + + + Optional to add + conditions on committing this block list. + + + Optional + Indicates the tier to be set on the blob. + + + Whether to invoke the operation asynchronously. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The operation operation retrieves + the list of blocks that have been uploaded as part of a block blob. + There are two block lists maintained for a blob. The Committed + Block list has blocks that have been successfully committed to a + given blob with . + The Uncommitted Block list has blocks that have been uploaded for a + blob using , but that have not yet + been committed. These blocks are stored in Azure in association + with a blob, but do not yet form part of the blob. + + + Specifies whether to return the list of committed blocks, the + list of uncommitted blocks, or both lists together. If you omit + this parameter, Get Block List returns the list of committed blocks. + + + Optionally specifies the blob snapshot to retrieve the block list + from. For more information on working with blob snapshots, see + + Create a snapshot of a blob. + + + Optional to add + conditions on retrieving the block list. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing requested + block list. + + + A will be thrown if + a failure occurs. + + + + + The operation operation retrieves + the list of blocks that have been uploaded as part of a block blob. + There are two block lists maintained for a blob. The Committed + Block list has blocks that have been successfully committed to a + given blob with . + The Uncommitted Block list has blocks that have been uploaded for a + blob using , but that have not yet + been committed. These blocks are stored in Azure in association + with a blob, but do not yet form part of the blob. + + + Specifies whether to return the list of committed blocks, the + list of uncommitted blocks, or both lists together. If you omit + this parameter, Get Block List returns the list of committed blocks. + + + Optionally specifies the blob snapshot to retrieve the block list + from. For more information on working with blob snapshots, see + + Create a snapshot of a blob. + + + Optional to add + conditions on retrieving the block list. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing requested + block list. + + + A will be thrown if + a failure occurs. + + + + + The API returns the + result of a query against the blob. + + For more information, see + + Query Blob Contents. + + + The query. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A will be thrown if + a failure occurs. + + + A . + + + + + The API returns the + result of a query against the blob. + + For more information, see + + Query Blob Contents. + + + The query. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A will be thrown if + a failure occurs. + + + A . + + + + + Opens a stream for writing to the blob. + + + Whether an existing blob should be deleted and recreated. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A stream to write to the Append Blob. + + + A will be thrown if + a failure occurs. + + + + + Opens a stream for writing to the blob. If the blob exists, + it will be overwritten. + + + Whether an existing blob should be deleted and recreated. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A stream to write to the Append Blob. + + + A will be thrown if + a failure occurs. + + + + + The Upload from Uri operation creates a new Block Blob where the contents of the + blob are read from a given URL. This API is supported beginning with the 2020-04-08 version. + + Partial updates are not supported with Put Blob from URL; the content of an existing blob is + overwritten with the content of the new blob. To perform partial updates to a block blob’s + contents using a source URL, use the Put Block from URL API in conjunction with Put Block List. + + + Required. Specifies the URL of the source blob. The source blob may be of any type, + including a block blob, append blob, or page blob. The value may be a URL of up to 2 + KiB in length that specifies a blob. The value should be URL-encoded as it would appear + in a request URI. The source blob must either be public or must be authorized via a + shared access signature. If the source blob is public, no authorization is required + to perform the operation. + + + Whether the upload should overwrite the existing blob. The + default value is false. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The Upload from Uri operation creates a new Block Blob where the contents of the + blob are read from a given URL. This API is supported beginning with the 2020-04-08 version. + + Partial updates are not supported with Put Blob from URL; the content of an existing blob is + overwritten with the content of the new blob. To perform partial updates to a block blob’s + contents using a source URL, use the Put Block from URL API in conjunction with Put Block List. + + + Required. Specifies the URL of the source blob. The source blob may be of any type, + including a block blob, append blob, or page blob. The value may be a URL of up to 2 + KiB in length that specifies a blob. The value should be URL-encoded as it would appear + in a request URI. The source blob must either be public or must be authorized via a + shared access signature. If the source blob is public, no authorization is required + to perform the operation. + + + Whether the upload should overwrite the existing blob. The + default value is false. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The Upload from Uri operation creates a new Block Blob where the contents of the + blob are read from a given URL. This API is supported beginning with the 2020-04-08 version. + + Partial updates are not supported with Put Blob from URL; the content of an existing blob is + overwritten with the content of the new blob. To perform partial updates to a block blob’s + contents using a source URL, use the Put Block from URL API in conjunction with Put Block List. + + + Required. Specifies the URL of the source blob. The source blob may be of any type, + including a block blob, append blob, or page blob. The value may be a URL of up to 2 + KiB in length that specifies a blob. The value should be URL-encoded as it would appear + in a request URI. The source blob must either be public or must be authorized via a + shared access signature. If the source blob is public, no authorization is required + to perform the operation. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The Upload from Uri operation creates a new Block Blob where the contents of the + blob are read from a given URL. This API is supported beginning with the 2020-04-08 version. + + Partial updates are not supported with Put Blob from URL; the content of an existing blob is + overwritten with the content of the new blob. To perform partial updates to a block blob’s + contents using a source URL, use the Put Block from URL API in conjunction with Put Block List. + + + Required. Specifies the URL of the source blob. The source blob may be of any type, + including a block blob, append blob, or page blob. The value may be a URL of up to 2 + KiB in length that specifies a blob. The value should be URL-encoded as it would appear + in a request URI. The source blob must either be public or must be authorized via a + shared access signature. If the source blob is public, no authorization is required + to perform the operation. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The Upload from Uri operation creates a new Block Blob where the contents of the + blob are read from a given URL. This API is supported beginning with the 2020-04-08 version. + + Partial updates are not supported with Put Blob from URL; the content of an existing blob is + overwritten with the content of the new blob. To perform partial updates to a block blob’s + contents using a source URL, use the Put Block from URL API in conjunction with Put Block List. + + + Required. Specifies the URL of the source blob. The source blob may be of any type, + including a block blob, append blob, or page blob. The value may be a URL of up to 2 + KiB in length that specifies a blob. The value should be URL-encoded as it would appear + in a request URI. The source blob must either be public or must be authorized via a + shared access signature. If the source blob is public, no authorization is required + to perform the operation. + + + Optional parameters. + + + Whether to invoke the operation asynchronously. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The allows you to manipulate Azure + Storage page blobs. + + Page blobs are a collection of 512-byte pages optimized for random + read and write operations. To create a page blob, you initialize the + page blob and specify the maximum size the page blob will grow. To add + or update the contents of a page blob, you write a page or pages by + specifying an offset and a range that align to 512-byte page + boundaries. A write to a page blob can overwrite just one page, some + pages, or up to 4 MB of the page blob. Writes to page blobs happen + in-place and are immediately committed to the blob. The maximum size + for a page blob is 8 TB. + + + + + Gets the number of bytes in a page (512). + + + + + Gets the maximum number of bytes that can be sent in a call + to the operation. + + + + + Initializes a new instance of the + class for mocking. + + + + + Initializes a new instance of the + class. + + + A connection string includes the authentication information + required for your application to access data in an Azure Storage + account at runtime. + + For more information + + Configure Azure Storage connection strings + + + The name of the container containing this page blob. + + + The name of this page blob. + + + + + Initializes a new instance of the + class. + + + A connection string includes the authentication information + required for your application to access data in an Azure Storage + account at runtime. + + For more information, + + Configure Azure Storage connection strings + + + The name of the container containing this page blob. + + + The name of this page blob. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the page blob that includes the + name of the account, the name of the blob container, and the name of + the blob. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the page blob that includes the + name of the account, the name of the blob container, and the name of + the blob. + + + The shared key credential used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the page blob that includes the + name of the account, the name of the blob container, and the name of + the blob. + Must not contain shared access signature, which should be passed in the second parameter. + + + The shared access signature credential used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + This constructor should only be used when shared access signature needs to be updated during lifespan of this client. + + + + + Initializes a new instance of the + class. + + + A referencing the page blob that includes the + name of the account, the name of the blob container, and the name of + the blob. + + + The token credential used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the page blob that includes the + name of the account, the name of the blob container, and the name of + the blob. + + + The transport pipeline used to send every request. + + + The shared key credential used to sign requests. + + + The version of the service to use when sending requests. + + Client diagnostics. + Customer provided key. + Encryption scope. + + + + Initializes a new instance of the + class with an identical source but the specified + snapshot timestamp. + + For more information, see + + Create a snapshot of a blob. + + The snapshot identifier. + A new instance. + + Pass null or empty string to remove the snapshot returning a URL + to the base blob. + + + + + Creates a new instance of the class + with an identical source but the specified + snapshot timestamp. + + The snapshot identifier. + A new instance. + + + + Creates a new PageBlobClient object identical to the source but with the specified version ID. + Pass "" to remove the version ID returning a URL to the base blob. + + version ID + + + + + The + operation creates a new page blob of the specified . + The content of any existing blob is overwritten with the newly initialized page blob + To add content to the page blob, call the + operation. + + For more information, see https://docs.microsoft.com/rest/api/storageservices/put-blob. + + + Specifies the maximum size for the page blob, up to 8 TB. The + size must be aligned to a 512-byte boundary. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + newly created page blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new page blob of the specified . + The content of any existing blob is overwritten with the newly initialized page blob + To add content to the page blob, call the + operation. + + For more information, see https://docs.microsoft.com/rest/api/storageservices/put-blob. + + + Specifies the maximum size for the page blob, up to 8 TB. The + size must be aligned to a 512-byte boundary. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + newly created page blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new page blob of the specified . The content of any + existing blob is overwritten with the newly initialized page blob + To add content to the page blob, call the + operation. + + For more information, see https://docs.microsoft.com/rest/api/storageservices/put-blob. + + + Specifies the maximum size for the page blob, up to 8 TB. The + size must be aligned to a 512-byte boundary. + + + Optional user-controlled value that you can use to track requests. + The value of the must be between + 0 and 2^63 - 1. The default value is 0. + + + Optional standard HTTP header properties that can be set for the + new page blob. + + + Optional custom metadata to set for this page blob. + + + Optional to add + conditions on the creation of this new page blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + newly created page blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new page blob of the specified . The content of any + existing blob is overwritten with the newly initialized page blob + To add content to the page blob, call the + operation. + + For more information, see https://docs.microsoft.com/rest/api/storageservices/put-blob. + + + Specifies the maximum size for the page blob, up to 8 TB. The + size must be aligned to a 512-byte boundary. + + + Optional user-controlled value that you can use to track requests. + The value of the must be between + 0 and 2^63 - 1. The default value is 0. + + + Optional standard HTTP header properties that can be set for the + new page blob. + + + Optional custom metadata to set for this page blob. + + + Optional to add + conditions on the creation of this new page blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + newly created page blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new page blob of the specified . If the blob already + exists, the content of the existing blob will remain unchanged. If the blob does not already exists, + a new page blob with the specified will be created. + operation. + + For more information, see https://docs.microsoft.com/rest/api/storageservices/put-blob. + + + Specifies the maximum size for the page blob, up to 8 TB. The + size must be aligned to a 512-byte boundary. + + + Optional parameters. + + /// + Optional to propagate + notifications that the operation should be cancelled. + + + If the page blob does not already exist, A + describing the newly created page blob. Otherwise, null. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new page blob of the specified . If the blob already + exists, the content of the existing blob will remain unchanged. If the blob does not already exists, + a new page blob with the specified will be created. + operation. + + For more information, see https://docs.microsoft.com/rest/api/storageservices/put-blob. + + + Specifies the maximum size for the page blob, up to 8 TB. The + size must be aligned to a 512-byte boundary. + + + Optional parameters. + + /// + Optional to propagate + notifications that the operation should be cancelled. + + + If the page blob does not already exist, A + describing the newly created page blob. Otherwise, null. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new page blob of the specified . If the blob already + exists, the content of the existing blob will remain unchanged. If the blob does not already exists, + a new page blob with the specified will be created. + operation. + + For more information, see https://docs.microsoft.com/rest/api/storageservices/put-blob. + + + Specifies the maximum size for the page blob, up to 8 TB. The + size must be aligned to a 512-byte boundary. + + + Optional user-controlled value that you can use to track requests. + The value of the must be between + 0 and 2^63 - 1. The default value is 0. + + + Optional standard HTTP header properties that can be set for the + new page blob. + + + Optional custom metadata to set for this page blob. + + /// + Optional to propagate + notifications that the operation should be cancelled. + + + If the page blob does not already exist, A + describing the newly created page blob. Otherwise, null. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new page blob of the specified . If the blob already exists, + the content of the existing blob will remain unchanged. If the blob does not already exists, + a new page blob with the specified will be created. + operation. + + For more information, see https://docs.microsoft.com/rest/api/storageservices/put-blob. + + + Specifies the maximum size for the page blob, up to 8 TB. The + size must be aligned to a 512-byte boundary. + + + Optional user-controlled value that you can use to track requests. + The value of the must be between + 0 and 2^63 - 1. The default value is 0. + + + Optional standard HTTP header properties that can be set for the + new page blob. + + + Optional custom metadata to set for this page blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + If the page blob does not already exist, A + describing the newly created page blob. Otherwise, null. + + + A will be thrown if + a failure occurs. + + + + + The operation writes + to a range of pages in a page blob, + starting at . + + For more information, see + + Put Page. + + + A containing the content of the pages to + upload. The content can be up to 4 MB in size. + + + Specifies the starting offset for the + to be written as a page. Given that pages must be aligned with + 512-byte boundaries, the start offset must be a modulus of 512. + + + Optional MD5 hash of the block content. This hash is used to + verify the integrity of the block during transport. When this hash + is specified, the storage service compares the hash of the content + that has arrived with this value. Note that this MD5 hash is not + stored with the blob. If the two hashes do not match, the + operation will fail with a . + + + Optional to add + conditions on uploading pages to this page blob. + + + Optional to provide + progress updates about data transfers. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated pages. + + + A will be thrown if + a failure occurs. + + + + + The operation writes + to a range of pages in a page blob, + starting at . + + For more information, see + + Put Page. + + + A containing the content of the pages to + upload. The content can be up to 4 MB in size. + + + Specifies the starting offset for the + to be written as a page. Given that pages must be aligned with + 512-byte boundaries, the start offset must be a modulus of 512. + + + Optional MD5 hash of the block content. This hash is used to + verify the integrity of the block during transport. When this hash + is specified, the storage service compares the hash of the content + that has arrived with this value. Note that this MD5 hash is not + stored with the blob. If the two hashes do not match, the + operation will fail with a . + + + Optional to add + conditions on uploading pages to this page blob. + + + Optional to provide + progress updates about data transfers. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated pages. + + + A will be thrown if + a failure occurs. + + + + + The operation writes + to a range of pages in a page blob, + starting at . + + For more information, see + + Put Page. + + + A containing the content of the pages to + upload. The content can be up to 4 MB in size. + + + Specifies the starting offset for the + to be written as a page. Given that pages must be aligned with + 512-byte boundaries, the start offset must be a modulus of 512. + + + Optional MD5 hash of the block content. This hash is used to + verify the integrity of the block during transport. When this hash + is specified, the storage service compares the hash of the content + that has arrived with this value. Note that this MD5 hash is not + stored with the blob. If the two hashes do not match, the + operation will fail with a . + + + Optional to add + conditions on uploading pages to this page blob. + + + Optional to provide + progress updates about data transfers. + + + Whether to invoke the operation asynchronously. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated pages. + + + A will be thrown if + a failure occurs. + + + + + The operation clears one or more + pages from the page blob, as specificed by the . + + For more information, see + + Put Page. + + + Specifies the range of bytes to be cleared. Both the start and + end of the range must be specified. For a page clear operation, + the page range can be up to the value of the blob's full size. + Given that pages must be aligned with 512-byte boundaries, the + start of the range must be a modulus of 512 and the end of the + range must be a modulus of 512 – 1. Examples of valid byte ranges + are 0-511, 512-1023, etc. + + + Optional to add + conditions on clearing pages from this page blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated pages. + + + A will be thrown if + a failure occurs. + + + + + The operation clears one or more + pages from the page blob, as specificed by the . + + For more information, see + + Put Page. + + + Specifies the range of bytes to be cleared. Both the start and + end of the range must be specified. For a page clear operation, + the page range can be up to the value of the blob's full size. + Given that pages must be aligned with 512-byte boundaries, the + start of the range must be a modulus of 512 and the end of the + range must be a modulus of 512 – 1. Examples of valid byte ranges + are 0-511, 512-1023, etc. + + + Optional to add + conditions on clearing pages from this page blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated pages. + + + A will be thrown if + a failure occurs. + + + + + The operation returns the list of + valid page ranges for a page blob or snapshot of a page blob. + + For more information, see + + Get Page Ranges. + + + Optionally specifies the range of bytes over which to list ranges, + inclusively. If omitted, then all ranges for the blob are returned. + + + Optionally specifies the blob snapshot to retrieve page ranges + information from. For more information on working with blob snapshots, + + Create a snapshot of a blob. + + + Optional to add + conditions on getting page ranges for the this blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + valid page ranges for this blob. + + + A will be thrown if + a failure occurs. + + + + + The operation returns the list of + valid page ranges for a page blob or snapshot of a page blob. + + For more information, see + + Get Page Ranges. + + + Optionally specifies the range of bytes over which to list ranges, + inclusively. If omitted, then all ranges for the blob are returned. + + + Optionally specifies the blob snapshot to retrieve page ranges + information from. For more information on working with blob snapshots, + + Create a snapshot of a blob. + + + Optional to add + conditions on getting page ranges for the this blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + valid page ranges for this blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation returns the list of page ranges that differ between a + and this page blob. Changed pages + include both updated and cleared pages. + + For more information, see + + Get Page Ranges. + + + Optionally specifies the range of bytes over which to list ranges, + inclusively. If omitted, then all ranges for the blob are returned. + + + Optionally specifies the blob snapshot to retrieve page ranges + information from. For more information on working with blob snapshots, + + Create a snapshot of a blob. + + + Specifies that the response will contain only pages that were + changed between target blob and previous snapshot. Changed pages + include both updated and cleared pages. The target blob may be a + snapshot, as long as the snapshot specified by + is the older of the two. + + + Optional to add + conditions on getting page ranges for the this blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + valid page ranges for this blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation returns the list of page ranges that differ between a + and this page blob. Changed pages + include both updated and cleared pages. + + For more information, see + + Get Page Ranges. + + + Optionally specifies the range of bytes over which to list ranges, + inclusively. If omitted, then all ranges for the blob are returned. + + + Optionally specifies the blob snapshot to retrieve page ranges + information from. For more information on working with blob snapshots, + + Create a snapshot of a blob. + + + Specifies that the response will contain only pages that were + changed between target blob and previous snapshot. Changed pages + include both updated and cleared pages. The target blob may be a + snapshot, as long as the snapshot specified by + is the older of the two. + + + Optional to add + conditions on getting page ranges for the this blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + valid page ranges for this blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation returns the list of page ranges that differ between a + and this page blob. Changed pages + include both updated and cleared pages. This API only works with + managed disk storage accounts. + + For more information, see + + Get Page Ranges. + + + Optionally specifies the range of bytes over which to list ranges, + inclusively. If omitted, then all ranges for the blob are returned. + + + Optionally specifies the blob snapshot to retrieve page ranges + information from. For more information on working with blob snapshots, + + Create a snapshot of a blob. + + + This parameter only works with managed disk storage accounts. + Specifies that the response will contain only pages that were + changed between target blob and previous snapshot. Changed pages + include both updated and cleared pages. The target blob may be a + snapshot, as long as the snapshot specified by + is the older of the two. + + + Optional to add + conditions on getting page ranges for the this blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + valid page ranges for this blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation returns the list of page ranges that differ between a + and this page blob. Changed pages + include both updated and cleared pages. This API only works with + managed disk storage accounts. + + For more information, see + + Get Page Ranges. + + + Optionally specifies the range of bytes over which to list ranges, + inclusively. If omitted, then all ranges for the blob are returned. + + + Optionally specifies the blob snapshot to retrieve page ranges + information from. For more information on working with blob snapshots, + + Create a snapshot of a blob. + + + This parameter only works with managed disk storage accounts. + Specifies that the response will contain only pages that were + changed between target blob and previous snapshot. Changed pages + include both updated and cleared pages. The target blob may be a + snapshot, as long as the snapshot specified by + is the older of the two. + + + Optional to add + conditions on getting page ranges for the this blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + valid page ranges for this blob. + + + A will be thrown if + a failure occurs. + + + + + The operation resizes the page blob to + the specified size (which must be a multiple of 512). If the + specified value is less than the current size of the blob, then + all pages above the specified value are cleared. + + For more information, see + + Set Blob Properties. + + + Specifies the maximum size for the page blob, up to 8 TB. The + size must be aligned to a 512-byte boundary. If the specified + value is less than the current size of the blob, then all pages + above the specified value are cleared. + + + Optional to add + conditions on the resize of this page blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the resized + page blob. + + + A will be thrown if + a failure occurs. + + + + + The operation resizes the page blob to + the specified size (which must be a multiple of 512). If the + specified value is less than the current size of the blob, then + all pages above the specified value are cleared. + + For more information, see + + Set Blob Properties. + + + Specifies the maximum size for the page blob, up to 8 TB. The + size must be aligned to a 512-byte boundary. If the specified + value is less than the current size of the blob, then all pages + above the specified value are cleared. + + + Optional to add + conditions on the resize of this page blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the resized + page blob. + + + A will be thrown if + a failure occurs. + + + + + The operation changes the + sequence number and + for this page blob. + + For more information, see + + Set Blob Properties. + + + Specifies how the service should modify the blob's sequence number. + sets the sequence number to + be the higher of the value included with the request and the value + currently stored for the blob. + sets the sequence number to the + value. increments + the value of the sequence number by 1. If specifying + , do not include the + because that will throw a + . + + + An updated sequence number of your choosing, if + is + or . The value should + not be provided if is + . The sequence number + is a user-controlled property that you can use to track requests + and manage concurrency issues via . + + + Optional to add conditions + on updating the sequence number of this page blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the updated + page blob. + + + A will be thrown if + a failure occurs. + + + + + The operation changes the + sequence number and + for this page blob. + + For more information, see + + Set Blob Properties. + + + Specifies how the service should modify the blob's sequence number. + sets the sequence number to + be the higher of the value included with the request and the value + currently stored for the blob. + sets the sequence number to the + value. increments + the value of the sequence number by 1. If specifying + , do not include the + because that will throw a + . + + + An updated sequence number of your choosing, if + is + or . The value should + not be provided if is + . The sequence number + is a user-controlled property that you can use to track requests + and manage concurrency issues via . + + + Optional to add conditions + on updating the sequence number of this page blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the updated + page blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation starts copying a snapshot of the sourceUri page blob to + this page blob. The snapshot is copied such that only the + differential changes between the previously copied snapshot are + transferred to the destination. The copied snapshots are complete + copies of the original snapshot and can be read or copied from as + usual. You can check the + returned from the to + determine if the copy has completed. + + For more information, see + + Incremental Copy Blob and + + Back up Azure unmanaged VM disks with incremental snapshots. + + + Specifies the to the source page blob as a up to + 2 KB in length. The source blob must either be public or must be + authenticated via a shared access signature. + + + The name of a snapshot to start copying from + sourceUri. + + + Optional to add + conditions on the incremental copy into this page blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A referencing the incremental + copy operation. + + + A will be thrown if + a failure occurs. + + The destination of an incremental copy must either not exist, or + must have been created with a previous incremental copy from the + same source blob. Once created, the destination blob is + permanently associated with the source and may only be used for + incremental copies. + + The , + , and + + operations indicate whether the blob is an incremental copy blob + created in this way. Incremental copy blobs may not be downloaded + directly. The only supported operations are + , + , + and . The copied snapshots may + be read and deleted as usual. + + An incremental copy is performed asynchronously on the service and + must be polled for completion. You can poll + and check + to determine when the copy + has completed. When the copy completes, the destination blob will + contain a new snapshot. The + operation returns the snapshot time of the newly created snapshot. + + The first time an incremental copy is performed on a destination + blob, a new blob is created with a snapshot that is fully copied + from the source. Each subsequent call to + will create a new snapshot by copying only the differential + changes from the previously copied snapshot. The differential + changes are computed on the server by issuing a + call on the source blob snapshot with prevSnapshot set to the most + recently copied snapshot. Therefore, the same restrictions on + apply to + . + Specifically, snapshots must be copied in ascending order and if + the source blob is recreated using or + + then + on new snapshots will fail. + + The additional storage space consumed by the copied snapshot is + the size of the differential data transferred during the copy. + This can be determined by performing a + + call on the snapshot to compare it to the previous snapshot. + + + + + The + operation starts copying a snapshot of the sourceUri page blob to + this page blob. The snapshot is copied such that only the + differential changes between the previously copied snapshot are + transferred to the destination. The copied snapshots are complete + copies of the original snapshot and can be read or copied from as + usual. You can check the + returned from the + to determine if thecopy has completed. + + For more information, see + + Incremental Copy Blob and + + Back up Azure unmanaged VM disks with incremental snapshots. + + + Specifies the to the source page blob as a up to + 2 KB in length. The source blob must either be public or must be + authenticated via a shared access signature. + + + The name of a snapshot to start copying from + sourceUri. + + + Optional to add + conditions on the incremental copy into this page blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the incremental copy operation. + + + A will be thrown if + a failure occurs. + + The destination of an incremental copy must either not exist, or + must have been created with a previous incremental copy from the + same source blob. Once created, the destination blob is + permanently associated with the source and may only be used for + incremental copies. + + The , + , and + + operations indicate whether the blob is an incremental copy blob + created in this way. Incremental copy blobs may not be downloaded + directly. The only supported operations are + , + , + and . The copied + snapshots may be read and deleted as usual. + + An incremental copy is performed asynchronously on the service and + must be polled for completion. You can poll + and check + to determine when the copy + has completed. When the copy completes, the destination blob will + contain a new snapshot. The + operation returns the snapshot time of the newly created snapshot. + + The first time an incremental copy is performed on a destination + blob, a new blob is created with a snapshot that is fully copied + from the source. Each subsequent call to + will create a new snapshot by copying only the differential + changes from the previously copied snapshot. The differential + changes are computed on the server by issuing a + call on the source blob snapshot with prevSnapshot set to the most + recently copied snapshot. Therefore, the same restrictions on + apply to + . + Specifically, snapshots must be copied in ascending order and if + the source blob is recreated using or + + then + on new snapshots will fail. + + The additional storage space consumed by the copied snapshot is + the size of the differential data transferred during the copy. + This can be determined by performing a + + call on the snapshot to compare it to the previous snapshot. + + + + + The operation writes a range + of pages to a page blob where the contents are read from + sourceUri. + + For more information, see + + Put Page From URL. + + + Specifies the of the source blob. The value may + be a of up to 2 KB in length that specifies a + blob. The source blob must either be public or must be + authenticated via a shared access signature. If the source blob + is public, no authentication is required to perform the operation. + + + Optionally only upload the bytes of the blob in the + sourceUri in the specified range. + + + Specifies the range to be written as a page. Both the start and + end of the range must be specified and can be up to 4MB in size. + Given that pages must be aligned with 512-byte boundaries, the + start of the range must be a modulus of 512 and the end of the + range must be a modulus of 512 – 1. Examples of valid byte ranges + are 0-511, 512-1023, etc. + + + Optional MD5 hash of the page block content from the + sourceUri. This hash is used to verify the + integrity of the block during transport of the data from the Uri. + When this hash is specified, the storage service compares the hash + of the content that has arrived from the sourceUri + with this value. Note that this md5 hash is not stored with the + blob. If the two hashes do not match, the operation will fail + with a . + + + Optional to add + conditions on the copying of data to this page blob. + + + Optional to add + conditions on the copying of data from this source blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated pages. + + + A will be thrown if + a failure occurs. + + + + + The operation writes a range + of pages to a page blob where the contents are read from + sourceUri. + + For more information, see + + Put Page From URL. + + + Specifies the of the source blob. The value may + be a of up to 2 KB in length that specifies a + blob. The source blob must either be public or must be + authenticated via a shared access signature. If the source blob + is public, no authentication is required to perform the operation. + + + Optionally only upload the bytes of the blob in the + sourceUri in the specified range. + + + Specifies the range to be written as a page. Both the start and + end of the range must be specified and can be up to 4MB in size. + Given that pages must be aligned with 512-byte boundaries, the + start of the range must be a modulus of 512 and the end of the + range must be a modulus of 512 – 1. Examples of valid byte ranges + are 0-511, 512-1023, etc. + + + Optional MD5 hash of the page block content from the + sourceUri. This hash is used to verify the + integrity of the block during transport of the data from the Uri. + When this hash is specified, the storage service compares the hash + of the content that has arrived from the sourceUri + with this value. Note that this md5 hash is not stored with the + blob. If the two hashes do not match, the operation will fail + with a . + + + Optional to add + conditions on the copying of data to this page blob. + + + Optional to add + conditions on the copying of data from this source blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated pages. + + + A will be thrown if + a failure occurs. + + + + + Opens a stream for writing to the blob. + + + Whether an existing blob should be deleted and recreated. + + + The offset within the blob to begin writing from. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A stream to write to the Append Blob. + + + A will be thrown if + a failure occurs. + + + + + Opens a stream for writing to the blob. + + + Whether an existing blob should be deleted and recreated. + + + The offset within the blob to begin writing from. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A stream to write to the Append Blob. + + + A will be thrown if + a failure occurs. + + + + + Provides advanced client configuration options for connecting to Azure Blob + Storage. + + + + + Initializes a new instance of the + class. + + + The of the service API used when + making requests. + + + +
+ Settings for data encryption when uploading and downloading with a . + Client-side encryption adds metadata to your blob which is necessary for decryption. + + For more information, see . + + + + + The allows you to manipulate Azure Storage + blobs. + + + + + Initializes a new instance of the + class for mocking. + + + + + Initializes a new instance of the + class. + + + A connection string includes the authentication information + required for your application to access data in an Azure Storage + account at runtime. + + For more information, + + Configure Azure Storage connection strings. + + + The name of the container containing this blob. + + + The name of this blob. + + + + + Initializes a new instance of the + class. + + + A connection string includes the authentication information + required for your application to access data in an Azure Storage + account at runtime. + + For more information, + + Configure Azure Storage connection strings. + + + The name of the container containing this blob. + + + The name of this blob. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the blob that includes the + name of the account, the name of the container, and the name of + the blob. + This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}". + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the blob that includes the + name of the account, the name of the container, and the name of + the blob. + This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}". + + + The shared key credential used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the blob that includes the + name of the account, the name of the container, and the name of + the blob. + This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}". + Must not contain shared access signature, which should be passed in the second parameter. + + + The shared access signature credential used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + This constructor should only be used when shared access signature needs to be updated during lifespan of this client. + + + + + Initializes a new instance of the + class. + + + A referencing the blob that includes the + name of the account, the name of the container, and the name of + the blob. + This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}". + + + The token credential used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the blob that includes the + name of the account, the name of the container, and the name of + the blob. + This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}". + + + The transport pipeline used to send every request. + + + The shared key credential used to sign requests. + + + The version of the service to use when sending requests. + + Client diagnostics. + Customer provided key. + Client-side encryption options. + Encryption scope. + + + + Initializes a new instance of the + class with an identical source but the specified + timestamp. + + For more information, see . + + The snapshot identifier. + A new instance. + + Pass null or empty string to remove the snapshot returning a URL + to the base blob. + + + + + Initializes a new instance of the + class with an identical source but the specified + timestamp. + + + The version identifier. + A new instance. + + Pass null or empty string to remove the version returning a URL + to the base blob. + + + + + Creates a new instance of the class, maintaining all the same + internals but specifying new . + + New encryption options. Setting this to default will clear client-side encryption. + New instance with provided options and same internals otherwise. + + + + The operation creates a new block blob + or updates the content of an existing block blob. Updating an + existing block blob overwrites any existing metadata on the blob. + + For partial block blob updates and other advanced features, please + see . To create or modify page or + append blobs, please see or + . + + For more information, see + + Put Blob. + + + A containing the content to upload. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The operation creates a new block blob + or updates the content of an existing block blob. Updating an + existing block blob overwrites any existing metadata on the blob. + + For partial block blob updates and other advanced features, please + see . To create or modify page or + append blobs, please see or + . + + For more information, see + + Put Blob. + + + A file path containing the content to upload. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The operation creates a new block blob + or updates the content of an existing block blob. Updating an + existing block blob overwrites any existing metadata on the blob. + + For partial block blob updates and other advanced features, please + see . To create or modify page or + append blobs, please see or + . + + For more information, see + + Put Blob. + + + A containing the content to upload. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The operation creates a new block blob + or updates the content of an existing block blob. Updating an + existing block blob overwrites any existing metadata on the blob. + + For partial block blob updates and other advanced features, please + see . To create or modify page or + append blobs, please see or + . + + For more information, see + + Put Blob. + + + A file path containing the content to upload. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The operation + creates a new block blob or updates the content of an existing + block blob. Updating an existing block blob overwrites any + existing metadata on the blob. + + For partial block blob updates and other advanced features, please + see . To create or modify page or + append blobs, please see or + . + + For more information, see + + Put Blob. + + + A containing the content to upload. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The operation + creates a new block blob or updates the content of an existing + block blob. Updating an existing block blob overwrites any + existing metadata on the blob. + + For partial block blob updates and other advanced features, please + see . To create or modify page or + append blobs, please see or + . + + For more information, see + + Put Blob. + + + A file path containing the content to upload. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The operation + creates a new block blob or updates the content of an existing + block blob. Updating an existing block blob overwrites any + existing metadata on the blob. + + For partial block blob updates and other advanced features, please + see . To create or modify page or + append blobs, please see or + . + + For more information, see + + Put Blob. + + + A containing the content to upload. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The operation + creates a new block blob or updates the content of an existing + block blob. Updating an existing block blob overwrites any + existing metadata on the blob. + + For partial block blob updates and other advanced features, please + see . To create or modify page or + append blobs, please see or + . + + For more information, see + + Put Blob. + + + A file path containing the content to upload. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The operation + creates a new block blob or updates the content of an existing + block blob. Updating an existing block blob overwrites any + existing metadata on the blob. + + For partial block blob updates and other advanced features, please + see . To create or modify page or + append blobs, please see or + . + + For more information, see + + Put Blob. + + + A containing the content to upload. + + + Whether the upload should overwrite any existing blobs. The + default value is false. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The operation + creates a new block blob or updates the content of an existing + block blob. Updating an existing block blob overwrites any + existing metadata on the blob. + + For partial block blob updates and other advanced features, please + see . To create or modify page or + append blobs, please see or + . + + For more information, see + + Put Blob. + + + A file path containing the content to upload. + + + Whether the upload should overwrite any existing blobs. The + default value is false. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The operation + creates a new block blob or updates the content of an existing + block blob. Updating an existing block blob overwrites any + existing metadata on the blob. + + For partial block blob updates and other advanced features, please + see . To create or modify page or + append blobs, please see or + . + + For more information, see + + Put Blob. + + + A containing the content to upload. + + + Whether the upload should overwrite any existing blobs. The + default value is false. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The operation + creates a new block blob or updates the content of an existing + block blob. Updating an existing block blob overwrites any + existing metadata on the blob. + + For partial block blob updates and other advanced features, please + see . To create or modify page or + append blobs, please see or + . + + For more information, see + + Put Blob. + + + A file path containing the content to upload. + + + Whether the upload should overwrite any existing blobs. The + default value is false. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new block blob or updates the content of an + existing block blob. Updating an existing block blob overwrites + any existing metadata on the blob. + + For partial block blob updates and other advanced features, please + see . To create or modify page or + append blobs, please see or + . + + For more information, see + + Put Blob. + + + A containing the content to upload. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new block blob or updates the content of an + existing block blob. Updating an existing block blob overwrites + any existing metadata on the blob. + + For partial block blob updates and other advanced features, please + see . To create or modify page or + append blobs, please see or + . + + For more information, + + Put Blob. + + + A containing the content to upload. + + + Optional standard HTTP header properties that can be set for the + block blob. + + + Optional custom metadata to set for this block blob. + + + Optional to add conditions on + the creation of this new block blob. + + + Optional to provide + progress updates about data transfers. + + + Optional + Indicates the tier to be set on the blob. + + + Optional to configure + parallel transfer behavior. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new block blob or updates the content of an + existing block blob. Updating an existing block blob overwrites + any existing metadata on the blob. + + For partial block blob updates and other advanced features, please + see . To create or modify page or + append blobs, please see or + . + + For more information, see + + Put Blob. + + + A file path containing the content to upload. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new block blob or updates the content of an + existing block blob. Updating an existing block blob overwrites + any existing metadata on the blob. + + For partial block blob updates and other advanced features, please + see . To create or modify page or + append blobs, please see or + . + + For more information, see + + Put Blob. + + + A file path containing the content to upload. + + + Optional standard HTTP header properties that can be set for the + block blob. + + + Optional custom metadata to set for this block blob. + + + Optional to add conditions on + the creation of this new block blob. + + + Optional to provide + progress updates about data transfers. + + + Optional + Indicates the tier to be set on the blob. + + + Optional to configure + parallel transfer behavior. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new block blob or updates the content of an + existing block blob. Updating an existing block blob overwrites + any existing metadata on the blob. + + For partial block blob updates and other advanced features, please + see . To create or modify page or + append blobs, please see or + . + + For more information, see + + Put Blob. + + + A containing the content to upload. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new block blob or updates the content of an + existing block blob. Updating an existing block blob overwrites + any existing metadata on the blob. + + For partial block blob updates and other advanced features, please + see . To create or modify page or + append blobs, please see or + . + + For more information, see + + Put Blob. + + + A containing the content to upload. + + + Optional standard HTTP header properties that can be set for the + block blob. + + + Optional custom metadata to set for this block blob. + + + Optional to add conditions on + the creation of this new block blob. + + + Optional to configure + parallel transfer behavior. + + + Optional to provide + progress updates about data transfers. + + + Optional + Indicates the tier to be set on the blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new block blob or updates the content of an + existing block blob. Updating an existing block blob overwrites + any existing metadata on the blob. + + For partial block blob updates and other advanced features, please + see . To create or modify page or + append blobs, please see or + . + + For more information, see + + Put Blob.. + + + A file path containing the content to upload. + + + Optional parameters. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new block blob or updates the content of an + existing block blob. Updating an existing block blob overwrites + any existing metadata on the blob. + + For partial block blob updates and other advanced features, please + see . To create or modify page or + append blobs, please see or + . + + For more information, see + + Put Blob. + + + A file path containing the content to upload. + + + Optional standard HTTP header properties that can be set for the + block blob. + + + Optional custom metadata to set for this block blob. + + + Optional to add conditions on + the creation of this new block blob. + + + Optional to provide + progress updates about data transfers. + + + Optional + Indicates the tier to be set on the blob. + + + Optional to configure + parallel transfer behavior. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + This operation will create a new + block blob of arbitrary size by uploading it as indiviually staged + blocks if it's larger than the + MaximumTransferLength. + + + A containing the content to upload. + + + Options for this upload. + + + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + This operation will create a new + block blob of arbitrary size by uploading it as indiviually staged + blocks if it's larger than the + . MaximumTransferLength. + + + A file path of the file to upload. + + + Options for this upload. + + + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown if + a failure occurs. + + + + + Provides the client configuration options for connecting to Azure Blob + Storage. + + + + + The Latest service version supported by this client library. + + + + + The versions of Azure Blob Storage supported by this client + library. For more, see + + Versioning for Azure Storage Services. + + + + + The 2019-02-02 service version described at + + Version 2019-02-02 + + + + + The 2019-07-07 service version described at + + Version 2019-07-07 + + + + + The 2019-12-12 service version. + + + + + The 2020-02-10 service version. + + + + + The 2020-04-08 service version. + + + + + Gets the of the service API used when + making requests. For more, see + + Versioning for Azure Storage Services. + + + + + Gets the to be used when making requests. + + + + + Gets the to be used when making requests. + + + + + Gets or sets the secondary storage that can be read from for the storage account if the + account is enabled for RA-GRS. + + If this property is set, the secondary Uri will be used for GET or HEAD requests during retries. + If the status of the response from the secondary Uri is a 404, then subsequent retries for + the request will not use the secondary Uri again, as this indicates that the resource + may not have propagated there yet. Otherwise, subsequent retries will alternate back and forth + between primary and secondary Uri. + + + + + Initializes a new instance of the + class. + + + The of the service API used when + making requests. + + + + + Create an HttpPipeline from BlobClientOptions. + + Optional authentication policy. + An HttpPipeline to use for Storage requests. + + + + Create an HttpPipeline from BlobClientOptions. + + Optional authentication credentials. + An HttpPipeline to use for Storage requests. + + + + Applies client-side encryption to the data for upload. + + + Content to encrypt. + + + Metadata to add encryption metadata to. + + + Whether to perform this operation asynchronously. + + + Cancellation token. + + Transformed content stream and metadata. + + + + The allows you to manipulate Azure + Storage containers and their blobs. + + + + + The Azure Storage name used to identify a storage account's root container. + + + + + The Azure Storage name used to identify a storage account's logs container. + + + + + The Azure Storage name used to identify a storage account's web content container. + + + + + Gets the container's primary endpoint. + + + + + The transport pipeline used to send + every request. + + + + + The version of the service to use when sending requests. + + + + + The instance used to create diagnostic scopes + every request. + + + + + The to be used when sending requests. + + + + + The to be used when sending requests. + + + + + The to be used when sending/receiving requests. + + + + + The to be used when sending requests. + + + + + The to be used when sending requests. + + + + + Gets the Storage account name corresponding to the container client. + + + + + Gets the name of the container. + + + + + Gets the The used to authenticate and generate SAS. + + + + + Determines whether the client is able to generate a SAS. + If the client is authenticated with a . + + + + + Initializes a new instance of the + class for mocking. + + + + + Initializes a new instance of the + class. + + + A connection string includes the authentication information + required for your application to access data in an Azure Storage + account at runtime. + + For more information, + + Configure Azure Storage connection strings + + + The name of the blob container in the storage account to reference. + + + + + Initializes a new instance of the + class. + + + A connection string includes the authentication information + required for your application to access data in an Azure Storage + account at runtime. + + For more information, + + Configure Azure Storage connection strings + + + The name of the container in the storage account to reference. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the blob container that includes the + name of the account and the name of the container. + This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}". + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the blob container that includes the + name of the account and the name of the container. + This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}". + + + The shared key credential used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the blob container that includes the + name of the account and the name of the container. + This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}". + Must not contain shared access signature, which should be passed in the second parameter. + + + The shared access signature credential used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + This constructor should only be used when shared access signature needs to be updated during lifespan of this client. + + + + + Initializes a new instance of the + class. + + + A referencing the blob container that includes the + name of the account and the name of the container. + This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}". + + + The token credential used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the blob container that includes the + name of the account and the name of the container. + This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}". + + + An optional authentication policy used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the blob container that includes the + name of the account and the name of the container. + This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}". + + + The transport pipeline used to send every request. + + + The version of the service to use when sending requests. + + + The shared key credential used to sign requests. + + + Customer provided key. + + Encryption scope. + + + + Initializes a new instance of the + class. + + + A referencing the block blob that includes the + name of the account, the name of the container, and the name of + the blob. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + The transport pipeline used to send every request. + + + New instance of the class. + + + + + Create a new object by appending + to the end of . The + new uses the same request policy + pipeline as the . + + The name of the blob. + A new instance. + + + + Create a new object by appending + to the end of . The + new uses the same request policy + pipeline as the . + + The name of the blob. + A new instance. + + + + Create a new object by + concatenating to + the end of the . The new + + uses the same request policy pipeline as the + . + + The name of the block blob. + A new instance. + + + + Create a new object by + concatenating to + the end of the . The new + + uses the same request policy pipeline as the + . + + The name of the append blob. + A new instance. + + + + Create a new object by + concatenating to + the end of the . The new + + uses the same request policy pipeline as the + . + + The name of the page blob. + A new instance. + + + + Initializes a new instance of the class. + + + An optional lease ID. If no lease ID is provided, a random lease + ID will be created. + + + + + The + operation creates a new container + under the specified account. If the container with the same name + already exists, the operation fails. + + For more information, see + + Create Container. + + + Optionally specifies whether data in the container may be accessed + publicly and the level of access. + specifies full public read access for container and blob data. + Clients can enumerate blobs within the container via anonymous + request, but cannot enumerate containers within the storage + account. specifies public + read access for blobs. Blob data within this container can be + read via anonymous request, but container data is not available. + Clients cannot enumerate blobs within the container via anonymous + request. specifies that the + container data is private to the account owner. + + + Optional custom metadata to set for this container. + + + Optional encryption scope options to set for this container. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the newly + created blob container. + + + A will be thrown if + a failure occurs. + + + + + The operation creates a new container + under the specified account. If the container with the same name + already exists, the operation fails. + + For more information, see + + Create Container. + + + Optionally specifies whether data in the container may be accessed + publicly and the level of access. + specifies full public read access for container and blob data. + Clients can enumerate blobs within the container via anonymous + request, but cannot enumerate containers within the storage + account. specifies public + read access for blobs. Blob data within this container can be + read via anonymous request, but container data is not available. + Clients cannot enumerate blobs within the container via anonymous + request. specifies that the + container data is private to the account owner. + + + Optional custom metadata to set for this container. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the newly + created blob container. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new container under the specified account. If the container with the same name + already exists, the operation fails. + + For more information, see + + Create Container. + + + Optionally specifies whether data in the container may be accessed + publicly and the level of access. + specifies full public read access for container and blob data. + Clients can enumerate blobs within the container via anonymous + request, but cannot enumerate containers within the storage + account. specifies public + read access for blobs. Blob data within this container can be + read via anonymous request, but container data is not available. + Clients cannot enumerate blobs within the container via anonymous + request. specifies that the + container data is private to the account owner. + + + Optional custom metadata to set for this container. + + + Optional encryption scope options to set for this container. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the newly + created container. + + + A will be thrown if + a failure occurs. + + + + + The operation creates a new container + under the specified account. If the container with the same name + already exists, the operation fails. + + For more information, see + + Create Container. + + + Optionally specifies whether data in the container may be accessed + publicly and the level of access. + specifies full public read access for container and blob data. + Clients can enumerate blobs within the container via anonymous + request, but cannot enumerate containers within the storage + account. specifies public + read access for blobs. Blob data within this container can be + read via anonymous request, but container data is not available. + Clients cannot enumerate blobs within the container via anonymous + request. specifies that the + container data is private to the account owner. + + + Optional custom metadata to set for this container. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the newly + created container. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new container under the specified account. If the container with the same name + already exists, it is not changed. + + For more information, see + + Create Container. + + + Optionally specifies whether data in the container may be accessed + publicly and the level of access. + specifies full public read access for container and blob data. + Clients can enumerate blobs within the container via anonymous + request, but cannot enumerate containers within the storage + account. specifies public + read access for blobs. Blob data within this container can be + read via anonymous request, but container data is not available. + Clients cannot enumerate blobs within the container via anonymous + request. specifies that the + container data is private to the account owner. + + + Optional custom metadata to set for this container. + + + Optional encryption scope options to set for this container. + + + Optional to propagate + notifications that the operation should be cancelled. + + + If the container does not already exist, a + describing the newly created container. If the container already exists, null. + + + A will be thrown if + a failure occurs. + + + + + The operation creates a new container + under the specified account. If the container with the same name + already exists, it is not changed. + + For more information, see + + Create Container. + + + Optionally specifies whether data in the container may be accessed + publicly and the level of access. + specifies full public read access for container and blob data. + Clients can enumerate blobs within the container via anonymous + request, but cannot enumerate containers within the storage + account. specifies public + read access for blobs. Blob data within this container can be + read via anonymous request, but container data is not available. + Clients cannot enumerate blobs within the container via anonymous + request. specifies that the + container data is private to the account owner. + + + Optional custom metadata to set for this container. + + + Optional to propagate + notifications that the operation should be cancelled. + + + If the container does not already exist, a + describing the newly created container. If the container already exists, null. + + + A will be thrown if + a failure occurs. + + + + + The + operation creates a new container under the specified account. If the container with the same name + already exists, it is not changed. + + For more information, see + + Create Container. + + + Optionally specifies whether data in the container may be accessed + publicly and the level of access. + specifies full public read access for container and blob data. + Clients can enumerate blobs within the container via anonymous + request, but cannot enumerate containers within the storage + account. specifies public + read access for blobs. Blob data within this container can be + read via anonymous request, but container data is not available. + Clients cannot enumerate blobs within the container via anonymous + request. specifies that the + container data is private to the account owner. + + + Optional custom metadata to set for this container. + + + Optional encryption scope options to set for this container. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the newly + created container. + + + A will be thrown if + a failure occurs. + + + + + The operation creates a new container + under the specified account. If the container with the same name + already exists, it is not changed. + + For more information, see + + Create Container. + + + Optionally specifies whether data in the container may be accessed + publicly and the level of access. + specifies full public read access for container and blob data. + Clients can enumerate blobs within the container via anonymous + request, but cannot enumerate containers within the storage + account. specifies public + read access for blobs. Blob data within this container can be + read via anonymous request, but container data is not available. + Clients cannot enumerate blobs within the container via anonymous + request. specifies that the + container data is private to the account owner. + + + Optional custom metadata to set for this container. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the newly + created container. + + + A will be thrown if + a failure occurs. + + + + + The operation marks the specified + container for deletion. The container and any blobs contained + within it are later deleted during garbage collection. + + For more information, see + + Delete Container. + + + Optional to add + conditions on the deletion of this container. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A if successful. + + + A will be thrown if + a failure occurs. + + + + + The operation marks the specified + container for deletion. The container and any blobs contained + within it are later deleted during garbage collection. + + For more information, see + + Delete Container. + + + Optional to add + conditions on the deletion of this container. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A if successful. + + + A will be thrown if + a failure occurs. + + + + + The operation marks the specified + container for deletion if it exists. The container and any blobs + contained within it are later deleted during garbage collection. + + For more information, see + + Delete Container. + + + Optional to add + conditions on the deletion of this container. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A Returns true if container exists and was + deleted, return false otherwise. + + + A will be thrown if + a failure occurs. + + + + + The operation marks the specified + container for deletion if it exists. The container and any blobs + contained within it are later deleted during garbage collection. + + For more information, see + + Delete Container. + + + Optional to add + conditions on the deletion of this container. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A Returns true if container exists and was + deleted, return false otherwise. + + + A will be thrown if + a failure occurs. + + + + + The operation can be called on a + to see if the associated container + exists on the storage account in the storage service. + + + Optional to propagate + notifications that the operation should be cancelled. + + + Returns true if the container exists. + + + A will be thrown if + a failure occurs. If you want to create the container if + it doesn't exist, use + + instead. + + + + + The operation can be called on a + to see if the associated container + exists on the storage account in the storage service. + + + Optional to propagate + notifications that the operation should be cancelled. + + + Returns true if the container exists. + + + A will be thrown if + a failure occurs. If you want to create the container if + it doesn't exist, use + + instead. + + + + + The operation returns all + user-defined metadata and system properties for the specified + container. The data returned does not include the container's + list of blobs. + + For more information, see + + Get Container Properties. + + + Optional to add + conditions on getting the blob container's properties. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + container and its properties. + + + A will be thrown if + a failure occurs. + + + + + The operation returns all + user-defined metadata and system properties for the specified + container. The data returned does not include the container's + list of blobs. + + For more information, see + + Get Container Properties. + + + Optional to add + conditions on getting the blob container's properties. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + container and its properties. + + + A will be thrown if + a failure occurs. + + + + + The operation sets one or more + user-defined name-value pairs for the specified container. + + For more information, see + + Set Container Metadata. + + + Custom metadata to set for this container. + + + Optional to add + conditions on the deletion of this container. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A if successful. + + + A will be thrown if + a failure occurs. + + + + + The operation sets one or more + user-defined name-value pairs for the specified container. + + For more information, see + + Set Container Metadata. + + + Custom metadata to set for this container. + + + Optional to add + conditions on the deletion of this container. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A if successful. + + + A will be thrown if + a failure occurs. + + + + + The operation gets the + permissions for this container. The permissions indicate whether + container data may be accessed publicly. + + For more information, see + + Get Container ACL. + + + Optional to add + conditions on getting the blob container's access policy. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing + the container's access policy. + + + A will be thrown if + a failure occurs. + + + + + The operation gets the + permissions for this container. The permissions indicate whether + container data may be accessed publicly. + + For more information, see + + Get Container ACL. + + + Optional to add + conditions on getting the blob container's access policy. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing + the container's access policy. + + + A will be thrown if + a failure occurs. + + + + + The operation sets the + permissions for the specified container. The permissions indicate + whether blob container data may be accessed publicly. + + For more information, see + + Set Container ACL. + + + Optionally specifies whether data in the container may be accessed + publicly and the level of access. + specifies full public read access for container and blob data. + Clients can enumerate blobs within the container via anonymous + request, but cannot enumerate containers within the storage + account. specifies public + read access for blobs. Blob data within this container can be + read via anonymous request, but container data is not available. + Clients cannot enumerate blobs within the container via anonymous + request. specifies that the + container data is private to the account owner. + + + Stored access policies that you can use to provide fine grained + control over container permissions. + + + Optional to add + conditions on setting this blob container's access policy. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + updated container. + + + A will be thrown if + a failure occurs. + + + + + The operation sets the + permissions for the specified container. The permissions indicate + whether blob container data may be accessed publicly. + + For more information, see + + Set Container ACL. + + + Optionally specifies whether data in the container may be accessed + publicly and the level of access. + specifies full public read access for container and blob data. + Clients can enumerate blobs within the container via anonymous + request, but cannot enumerate containers within the storage + account. specifies public + read access for blobs. Blob data within this container can be + read via anonymous request, but container data is not available. + Clients cannot enumerate blobs within the container via anonymous + request. specifies that the + container data is private to the account owner. + + + Stored access policies that you can use to provide fine grained + control over container permissions. + + + Optional to add + conditions on setting this blob container's access policy. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + updated container. + + + A will be thrown if + a failure occurs. + + + + + The operation returns an async sequence + of blobs in this container. Enumerating the blobs may make + multiple requests to the service while fetching all the values. + Blobs are ordered lexicographically by name. + + For more information, see + + List Blobs. + + + Specifies trait options for shaping the blobs. + + + Specifies state options for filtering the blobs. + + + Specifies a string that filters the results to return only blobs + whose name begins with the specified . + + + Optional to propagate + notifications that the operation should be cancelled. + + + An of + describing the blobs in the container. + + + A will be thrown if + a failure occurs. + + + + + The operation returns an async + sequence of blobs in this container. Enumerating the blobs may + make multiple requests to the service while fetching all the + values. Blobs are ordered lexicographically by name. + + For more information, see + + List Blobs. + + + Specifies trait options for shaping the blobs. + + + Specifies state options for filtering the blobs. + + + Specifies a string that filters the results to return only blobs + whose name begins with the specified . + + + Optional to propagate + notifications that the operation should be cancelled. + + + An describing the + blobs in the container. + + + A will be thrown if + a failure occurs. + + + + + The operation returns a + single segment of blobs in this container, starting + from the specified . Use an empty + to start enumeration from the beginning + and the if it's not + empty to make subsequent calls to + to continue enumerating the blobs segment by segment. Blobs are + ordered lexicographically by name. + + For more information, see + + List Blobs. + + + An optional string value that identifies the segment of the list + of blobs to be returned with the next listing operation. The + operation returns a non-empty + if the listing operation did not return all blobs remaining to be + listed with the current segment. The NextMarker value can + be used as the value for the parameter + in a subsequent call to request the next segment of list items. + + + Specifies trait options for shaping the blobs. + + + Specifies state options for filtering the blobs. + + + Specifies a string that filters the results to return only blobs + whose name begins with the specified . + + + Gets or sets a value indicating the size of the page that should be + requested. + + + Whether to invoke the operation asynchronously. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing a + segment of the blobs in the container. + + + A will be thrown if + a failure occurs. + + + + + The operation returns + an async collection of blobs in this container. Enumerating the + blobs may make multiple requests to the service while fetching all + the values. Blobs are ordered lexicographically by name. A + can be used to traverse a virtual + hierarchy of blobs as though it were a file system. + + For more information, see + + List Blobs. + + + Specifies trait options for shaping the blobs. + + + Specifies state options for filtering the blobs. + + + A that can be used to traverse a + virtual hierarchy of blobs as though it were a file system. The + delimiter may be a single character or a string. + will be returned + in place of all blobs whose names begin with the same substring up + to the appearance of the delimiter character. The value of a + prefix is substring+delimiter, where substring is the common + substring that begins one or more blob names, and delimiter is the + value of . You can use the value of + prefix to make a subsequent call to list the blobs that begin with + this prefix, by specifying the value of the prefix for the + . + + Note that each BlobPrefix element returned counts toward the + maximum result, just as each Blob element does. + + + Specifies a string that filters the results to return only blobs + whose name begins with the specified . + + + Optional to propagate + notifications that the operation should be cancelled. + + + An of + describing the blobs in the container. + + + A will be thrown if + a failure occurs. + + + + + The operation returns + an async collection of blobs in this container. Enumerating the + blobs may make multiple requests to the service while fetching all + the values. Blobs are ordered lexicographically by name. A + can be used to traverse a virtual + hierarchy of blobs as though it were a file system. + + For more information, see + + List Blobs. + + + Specifies trait options for shaping the blobs. + + + Specifies state options for filtering the blobs. + + + A that can be used to traverse a + virtual hierarchy of blobs as though it were a file system. The + delimiter may be a single character or a string. + will be returned + in place of all blobs whose names begin with the same substring up + to the appearance of the delimiter character. The value of a + prefix is substring+delimiter, where substring is the common + substring that begins one or more blob names, and delimiter is the + value of . You can use the value of + prefix to make a subsequent call to list the blobs that begin with + this prefix, by specifying the value of the prefix for the + . + + Note that each BlobPrefix element returned counts toward the + maximum result, just as each Blob element does. + + + Specifies a string that filters the results to return only blobs + whose name begins with the specified . + + + Optional to propagate + notifications that the operation should be cancelled. + + + An describing the + blobs in the container. + + + A will be thrown if + a failure occurs. + + + + + The operation returns + a single segment of blobs in this container, starting + from the specified . Use an empty + to start enumeration from the beginning + and the if it's not + empty to make subsequent calls to + to continue enumerating the blobs segment by segment. Blobs are + ordered lexicographically by name. A + can be used to traverse a virtual hierarchy of blobs as though + it were a file system. + + For more information, see + + List Blobs. + + + An optional string value that identifies the segment of the list + of blobs to be returned with the next listing operation. The + operation returns a non-empty + if the listing operation did not return all blobs remaining to be + listed with the current segment. The NextMarker value can + be used as the value for the parameter + in a subsequent call to request the next segment of list items. + + + A that can be used to traverse a + virtual hierarchy of blobs as though it were a file system. The + delimiter may be a single character or a string. + will be returned + in place of all blobs whose names begin with the same substring up + to the appearance of the delimiter character. The value of a + prefix is substring+delimiter, where substring is the common + substring that begins one or more blob names, and delimiter is the + value of . You can use the value of + prefix to make a subsequent call to list the blobs that begin with + this prefix, by specifying the value of the prefix for the + . + + Note that each BlobPrefix element returned counts toward the + maximum result, just as each Blob element does. + + + Specifies trait options for shaping the blobs. + + + Specifies state options for filtering the blobs. + + + Specifies a string that filters the results to return only blobs + whose name begins with the specified . + + + Gets or sets a value indicating the size of the page that should be + requested. + + + Whether to invoke the operation asynchronously. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing a + segment of the blobs in the container. + + + A will be thrown if + a failure occurs. + + + + + The operation creates a new block + blob. + + For partial block blob updates and other advanced features, please + see . To create or modify page or + append blobs, please see or + . + + For more information, see + + Put Blob. + + The name of the blob to upload. + + A containing the content to upload. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown + if the blob already exists. To overwrite an existing block blob, + get a by calling , + and then call + with the override parameter set to true. + + + + + The operation creates a new block + blob. + + For partial block blob updates and other advanced features, please + see . To create or modify page or + append blobs, please see or + . + + For more information, see + + Put Blob. + + The name of the blob to upload. + + A containing the content to upload. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the + state of the updated block blob. + + + A will be thrown + if the blob already exists. To overwrite an existing block blob, + get a by calling , + and then call + with the override parameter set to true. + + + + + The operation marks the specified + blob or snapshot for deletion. The blob is later deleted during + garbage collection. + + Note that in order to delete a blob, you must delete all of its + snapshots. You can delete both at the same time using + . + + For more information, see + + Delete Blob. + + The name of the blob to delete. + + Specifies options for deleting blob snapshots. + + + Optional to add conditions on + deleting this blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A on successfully deleting. + + + A will be thrown if + a failure occurs. + + + + + The operation marks the specified + blob or snapshot for deletion. The blob is later deleted during + garbage collection. + + Note that in order to delete a blob, you must delete all of its + snapshots. You can delete both at the same time using + . + + For more information, see + + Delete Blob. + + The name of the blob to delete. + + Specifies options for deleting blob snapshots. + + + Optional to add conditions on + deleting this blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A on successfully deleting. + + + A will be thrown if + a failure occurs. + + + + + The operation marks the specified + blob or snapshot for deletion, if the blob or snapshot exists. The blob + is later deleted during garbage collection. + + Note that in order to delete a blob, you must delete all of its + snapshots. You can delete both at the same time using + . + + For more information, see + + Delete Blob. + + The name of the blob to delete. + + Specifies options for deleting blob snapshots. + + + Optional to add conditions on + deleting this blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A on successfully deleting. + + + A will be thrown if + a failure occurs. + + + + + The operation marks the specified + blob or snapshot for deletion, if the blob or snapshot exists. The blob + is later deleted during garbage collection. + + Note that in order to delete a blob, you must delete all of its + snapshots. You can delete both at the same time using + . + + For more information, see + + Delete Blob. + + The name of the blob to delete. + + Specifies options for deleting blob snapshots. + + + Optional to add conditions on + deleting this blob. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A on successfully deleting. + + + A will be thrown if + a failure occurs. + + + + + The + returns a that generates a Blob Container Service + Shared Access Signature (SAS) Uri based on the Client properties + and parameters passed. The SAS is signed by the shared key credential + of the client. + + To check if the client is able to sign a Service Sas see + . + + For more information, see + + Constructing a service SAS. + + + Required. Specifies the list of permissions to be associated with the SAS. + See . + + + Required. Specifies the time at which the SAS becomes invalid. This field + must be omitted if it has been specified in an associated stored access policy. + + + A containing the SAS Uri. + + + A will be thrown if a failure occurs. + + + + + The returns a + that generates a Blob Container Service Shared Access Signature (SAS) Uri + based on the Client properties and builder passed. The SAS is signed by + the shared key credential of the client. + + To check if the client is able to sign a Service Sas see + . + + For more information, see + + Constructing a Service SAS. + + + Used to generate a Shared Access Signature (SAS). + + + A containing the SAS Uri. + + + A will be thrown if a failure occurs. + + + + + Create a new that pointing to this 's blob service. + The new + uses the same request policy pipeline as the + . + + A new instance. + + + + Create exceptions for common error cases. + + + + + BlobRestClient response extensions + + + BlockListTypes extensions + + + BlobContainerTraits/BlobContianerStates enum methods. + + + BlobTraits/BlobStates enum methods + + + BlobRestClient response extensions + + + Blob enum extensions + + + Blob enum extensions. + + + Blob enum extensions + + + Blob enum extensions. + + + Blob enum extensions. + + + + + Creates a new BlobProperties object backed by BlobPropertiesInternal. + + + The BlobPropertiesInternal returned with the request. + + + + + Internal. Parses Object Replication Policy ID from Rule ID and sets the Policy ID for source blobs. + + + Unparsed Object Replication headers. + For source blobs, the dictionary will contain keys that contain the policy id and rule id separated + by a underscore (e.g. policyId_ruleId). The value of these keys will be the replication status (e.g. Complete, Failed). + For destination blobs, the dictionary will contain one entry where the key will be "policy-id" + and the value will be the destination policy id. No parsing will be required for this. + + + If the blob has object replication policy(s) applied and is the source blob, this method will return a + List of , which contains the Policy ID and the respective + rule(s) and replication status(s) for each policy. + If the blob has object replication policy applied and is the destination blob, + this method will return default as the policy id should be set in ObjectReplicationDestinationPolicyId + (e.g. ,). + + + + + Internal. Parses Object Replication Policy ID from Rule ID and sets the Policy ID for source blobs. + + + Unparsed Object Replication headers. + For source blobs, the dictionary will contain keys that are prefixed with "or-" and followed by the + policy id and rule id separated by a underscore (e.g. or-policyId_ruleId). + The value of this metadata key will be the replication status (e.g. Complete, Failed). + + + If the blob has object replication policy(s) applied and is the source blob, this method will return a + List of , which contains the Policy ID and the respective + rule(s) and replication status(s) for each policy. + + + + + Convert the internal GetBlockListOperation response into a BlockList. + + The original response. + The BlockList response. + + + + Convert the BlockListTypes into a BlockListType. + + + The BlockList response. + + + + Convert the details into ListContainersIncludeType values. + + ListContainersIncludeType values + + + + Convert the details into ListBlobsIncludeItem values. + + ListBlobsIncludeItem values + + + + Convert the internal BrokenLease response into a Lease. The + LeaseId will be empty. + + The original response. + The Lease response. + + + + Create a permissions string to provide + . + + A permissions string. + + + + Create a permissions string to provide + . + + A permissions string. + + + + Create a permissions string to provide + . + + A permissions string. + + + + Create a permissions string to provide + . + + A permissions string. + + + + Create a permissions string to provide + . + + A permissions string. + + + + QuickQueryStream. + + + + + Underlying stream. + + + + + Avro Reader. + + + + + Buffer to hold bytes we haven't processed yet. + + + + + Current buffer offset. + + + + + The current length of the buffer. + + + + + Progress handler. + + + + + Error handler. + + + + When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.An array of bytes. When this method returns, the buffer contains the specified byte array with the values between and ( + - 1) replaced by the bytes read from the current source.The zero-based byte offset in at which to begin storing the data read from the current stream.The maximum number of bytes to be read from the current stream.The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.The sum of and is larger than the buffer length. is . or is negative.An I/O error occurs.The stream does not support reading.Methods were called after the stream was closed. + + + + + + When overridden in a derived class, gets a value indicating whether the current stream supports reading. if the stream supports reading; otherwise, . + + + When overridden in a derived class, gets a value indicating whether the current stream supports seeking. if the stream supports seeking; otherwise, . + + + When overridden in a derived class, gets a value indicating whether the current stream supports writing. if the stream supports writing; otherwise, . + + + When overridden in a derived class, gets the length in bytes of the stream.A long value representing the length of the stream in bytes.A class derived from does not support seeking.Methods were called after the stream was closed. + + + When overridden in a derived class, gets or sets the position within the current stream.The current position within the stream.An I/O error occurs.The stream does not support seeking.Methods were called after the stream was closed. + + + When overridden in a derived class, clears all buffers for this stream and causes any buffered data to be written to the underlying device.An I/O error occurs. + + + When overridden in a derived class, sets the position within the current stream.A byte offset relative to the parameter.A value of type indicating the reference point used to obtain the new position.The new position within the current stream.An I/O error occurs.The stream does not support seeking, such as if the stream is constructed from a pipe or console output.Methods were called after the stream was closed. + + + When overridden in a derived class, sets the length of the current stream.The desired length of the current stream in bytes.An I/O error occurs.The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output.Methods were called after the stream was closed. + + + When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.An array of bytes. This method copies bytes from to the current stream.The zero-based byte offset in at which to begin copying bytes to the current stream.The number of bytes to be written to the current stream.The sum of and is greater than the buffer length. is . or is negative.An I/O error occurred, such as the specified file cannot be found.The stream does not support writing. was called after the stream was closed. + + + Releases the unmanaged resources used by the and optionally releases the managed resources. to release both managed and unmanaged resources; to release only unmanaged resources. + + + + The allows you to manipulate Azure + Storage service resources and blob containers. The storage account provides + the top-level namespace for the Blob service. + + + + + Gets the blob service's primary endpoint. + + + + + The transport pipeline used to send + every request. + + + + + The version of the service to use when sending requests. + + + + + The instance used to create diagnostic scopes + every request. + + + + + The to be used when sending requests. + + + + + The to be used when sending requests. + + + + + The to be used when sending/receiving requests. + + + + + The name of the Encryption Scope to be used when sending request. + + + + + The name of the Encryption Scope to be used when sending request. + + + + + Gets the Storage account name corresponding to the service client. + + + + + Gets the The used to authenticate and generate SAS. + + + + + Determines whether the client is able to generate a SAS. + If the client is authenticated with a . + + + + + Initializes a new instance of the + class for mocking. + + + + + Initializes a new instance of the + class. + + + A connection string includes the authentication information + required for your application to access data in an Azure Storage + account at runtime. + + For more information, Configure Azure Storage connection strings. + + + + + Initializes a new instance of the + class. + + + A connection string includes the authentication information + required for your application to access data in an Azure Storage + account at runtime. + + For more information, + + Configure Azure Storage connection strings. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the blob service. + This is likely to be similar to "https://{account_name}.blob.core.windows.net". + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the blob service. + This is likely to be similar to "https://{account_name}.blob.core.windows.net". + + + The shared key credential used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the blob service. + This is likely to be similar to "https://{account_name}.blob.core.windows.net". + Must not contain shared access signature, which should be passed in the second parameter. + + + The shared access signature credential used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + This constructor should only be used when shared access signature needs to be updated during lifespan of this client. + + + + + Initializes a new instance of the + class. + + + A referencing the blob service. + This is likely to be similar to "https://{account_name}.blob.core.windows.net". + + + The token credential used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + + + Initializes a new instance of the + class. + + + A referencing the blob service. + This is likely to be similar to "https://{account_name}.blob.core.windows.net". + + + An optional authentication policy used to sign requests. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + Optional storage shared key credential used to sign requests and generate sas. + + + + + Initializes a new instance of the + class. + + + A referencing the blob service. + This is likely to be similar to "https://{account_name}.blob.core.windows.net". + + + An optional authentication policy used to sign requests. + + + The version of the service to use when sending requests. + + + The instance used to create + diagnostic scopes every request. + + Customer provided key. + Client-side encryption options. + Encryption scope. + + The transport pipeline used to send every request. + + Storage Shared Key Credential + + + + Intended for DataLake to create a backing blob client. + + Initializes a new instance of the + class. + + + A referencing the block blob that includes the + name of the account, the name of the container, and the name of + the blob. + + + Optional client options that define the transport pipeline + policies for authentication, retries, etc., that are applied to + every request. + + + An optional authentication policy used to sign requests. + + + The transport pipeline used to send every request. + + + New instanc of the class. + + + + + Create a new object by appending + to the end of . + The new uses the same request + policy pipeline as the . + + + The name of the blob container to reference. + + + A for the desired container. + + + + + Get a 's + for creating child clients. + + The BlobServiceClient. + The BlobServiceClient's HttpPipeline. + + + + Get a 's authentication + for creating child clients. + + The BlobServiceClient. + The BlobServiceClient's authentication policy. + + + + Get a 's + for creating child clients. + + The BlobServiceClient. + The BlobServiceClient's BlobClientOptions. + + + + The + operation returns an asyncsequence of blob containers in the storage account. Enumerating the + blob containers may make multiple requests to the service while fetching + all the values. Containers are ordered lexicographically by name. + + For more information, + see + List Containers. + + + Specifies trait options for shaping the blob containers. + + + Specifies state options for shaping the blob containers. + + + Specifies a string that filters the results to return only containers + whose name begins with the specified . + + + Optional to propagate + notifications that the operation should be cancelled. + + + An of + describing the blob containers in the storage account. + + + A will be thrown if + a failure occurs. + + + + + The operation returns an async + sequence of blob containers in the storage account. Enumerating the + blob containers may make multiple requests to the service while fetching + all the values. Containers are ordered lexicographically by name. + + For more information, see + + List Containers. + + + Specifies trait options for shaping the blob containers. + + + Specifies a string that filters the results to return only containers + whose name begins with the specified . + + + Optional to propagate + notifications that the operation should be cancelled. + + + An of + describing the blob containers in the storage account. + + + A will be thrown if + a failure occurs. + + + + + The + operation returns an async sequence of blob containers in the storage account. Enumerating the + blob containers may make multiple requests to the service while fetching + all the values. Containers are ordered lexicographically by name. + + For more information, see + + List Containers. + + + Specifies trait options for shaping the blob containers. + + + Specifies states options for shaping the blob containers. + + + Specifies a string that filters the results to return only containers + whose name begins with the specified . + + + Optional to propagate + notifications that the operation should be cancelled. + + + An describing the + containers in the storage account. + + + A will be thrown if + a failure occurs. + + + + + The + operation returns an async sequence of blob containers in the storage account. Enumerating the + blob containers may make multiple requests to the service while fetching + all the values. Containers are ordered lexicographically by name. + + For more information, see + + List Containers. + + + Specifies trait options for shaping the blob containers. + + + Specifies a string that filters the results to return only containers + whose name begins with the specified . + + + Optional to propagate + notifications that the operation should be cancelled. + + + An describing the + containers in the storage account. + + + A will be thrown if + a failure occurs. + + + + + The operation returns a + single segment of blob containers in the storage account, starting + from the specified . Use an empty + to start enumeration from the beginning + and the if it's not + empty to make subsequent calls to + to continue enumerating the containers segment by segment. + Containers are ordered lexicographically by name. + + For more information, see + + List Containers. + + + An optional string value that identifies the segment of the list + of blob containers to be returned with the next listing operation. The + operation returns a non-empty + if the listing operation did not return all blob containers remaining + to be listed with the current segment. The NextMarker value can + be used as the value for the parameter + in a subsequent call to request the next segment of list items. + + + Specifies trait options for shaping the blob containers. + + + Specifies state options for shaping the blob containers. + + + Specifies a string that filters the results to return only containers + whose name begins with the specified . + + + Gets or sets a value indicating the size of the page that should be + requested. + + + Whether to invoke the operation asynchronously. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing a + segment of the blob containers in the storage account. + + + A will be thrown if + a failure occurs. + + + + + The operation returns the sku + name and account kind for the specified account. + + For more information, see + + Get Account Information. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the account. + + + A will be thrown if + a failure occurs. + + + + + The operation returns the sku + name and account kind for the specified account. + + For more information, see + + Get Account Information. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing the account. + + + A will be thrown if + a failure occurs. + + + + + The operation gets the properties + of a storage account’s blob service, including properties for + Storage Analytics and CORS (Cross-Origin Resource Sharing) rules. + + For more information, see + + Get Blob Service Properties. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing + the service properties. + + + A will be thrown if + a failure occurs. + + + + + The operation gets the properties + of a storage account’s blob service, including properties for + Storage Analytics and CORS (Cross-Origin Resource Sharing) rules. + + For more information, see + + Get Blob Service Properties. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing + the service properties. + + + A will be thrown if + a failure occurs. + + + + + The operation sets properties for + a storage account’s Blob service endpoint, including properties + for Storage Analytics, CORS (Cross-Origin Resource Sharing) rules + and soft delete settings. You can also use this operation to set + the default request version for all incoming requests to the Blob + service that do not have a version specified. + + For more information, see + + Set Blob Service Properties. + + The blob service properties. + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing + the service properties. + + + A will be thrown if + a failure occurs. + + + + + The operation sets properties for + a storage account’s Blob service endpoint, including properties + for Storage Analytics, CORS (Cross-Origin Resource Sharing) rules + and soft delete settings. You can also use this operation to set + the default request version for all incoming requests to the Blob + service that do not have a version specified. + + For more information, see + + Set Blob Service Properties. + + The blob service properties. + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing + the service properties. + + + A will be thrown if + a failure occurs. + + + + + The operation retrieves + statistics related to replication for the Blob service. It is + only available on the secondary location endpoint when read-access + geo-redundant replication () + is enabled for the storage account. + + For more information, see + + Get Blob Service Stats. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing + the service replication statistics. + + + A will be thrown if + a failure occurs. + + + + + The operation retrieves + statistics related to replication for the Blob service. It is + only available on the secondary location endpoint when read-access + geo-redundant replication () + is enabled for the storage account. + + For more information, see + + Get Blob Service Stats. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing + the service replication statistics. + + + A will be thrown if + a failure occurs. + + + + + The operation retrieves a + key that can be used to delegate Active Directory authorization to + shared access signatures created with . + + + Start time for the key's validity, with null indicating an + immediate start. The time should be specified in UTC. + + + Expiration of the key's validity. The time should be specified + in UTC. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing + the service replication statistics. + + + A will be thrown if + a failure occurs. + + + + + The operation retrieves a + key that can be used to delegate Active Directory authorization to + shared access signatures created with . + + + Start time for the key's validity, with null indicating an + immediate start. The time should be specified in UTC. + + + Expiration of the key's validity. The time should be specified + in UTC. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A describing + the service replication statistics. + + + A will be thrown if + a failure occurs. + + + + + The operation creates a new + blob container under the specified account. If the container with the + same name already exists, the operation fails. + + For more information, see + + Create Container. + + + The name of the container to create. + + + Optionally specifies whether data in the container may be accessed + publicly and the level of access. + specifies full public read access for container and blob data. + Clients can enumerate blobs within the container via anonymous + request, but cannot enumerate containers within the storage + account. specifies public + read access for blobs. Blob data within this container can be + read via anonymous request, but container data is not available. + Clients cannot enumerate blobs within the container via anonymous + request. specifies that the + container data is private to the account owner. + + + Optional custom metadata to set for this container. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A referencing the + newly created container. + + + A will be thrown if + a failure occurs. + + + + + The operation creates a new + blob container under the specified account. If the container with the + same name already exists, the operation fails. + + For more information, see + + Create Container. + + + The name of the container to create. + + + Optionally specifies whether data in the container may be accessed + publicly and the level of access. + specifies full public read access for container and blob data. + Clients can enumerate blobs within the container via anonymous + request, but cannot enumerate containers within the storage + account. specifies public + read access for blobs. Blob data within this container can be + read via anonymous request, but container data is not available. + Clients cannot enumerate blobs within the container via anonymous + request. specifies that the + container data is private to the account owner. + + + Optional custom metadata to set for this container. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A referencing the + newly created container. + + + A will be thrown if + a failure occurs. + + + + + The operation marks the + specified blob container for deletion. The container and any blobs + contained within it are later deleted during garbage collection. + + For more information, see + + Delete Container. + + + The name of the container to delete. + + + Optional to add + conditions on the deletion of this container. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A if successful. + + + A will be thrown if + a failure occurs. + + + + + The operation marks the + specified container for deletion. The container and any blobs + contained within it are later deleted during garbage collection. + + For more information, see + + Delete Container. + + + The name of the blob container to delete. + + + Optional to add + conditions on the deletion of this blob container. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A if successful. + + + A will be thrown if + a failure occurs. + + + + + Restores a previously deleted container. + This API is only functional is Container Soft Delete is enabled + for the storage account associated with the container. + + + The name of the previously deleted container. + + + The version of the previously deleted container. + + + Optional. Use this parameter if you would like to restore the container + under a different name. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A pointed at the undeleted container. + + + A will be thrown if + a failure occurs. + + + + + Restores a previously deleted container. + This API is only functional is Container Soft Delete is enabled + for the storage account associated with the container. + + + The name of the previously deleted container. + + + The version of the previously deleted container. + + + Optional. Use this parameter if you would like to restore the container + under a different name. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A pointed at the undeleted container. + + + A will be thrown if + a failure occurs. + + + + + Restores a previously deleted container. + This API is only functional is Container Soft Delete is enabled + for the storage account associated with the container. + + + The name of the previously deleted container. + + + The version of the previously deleted container. + + + Optional. Use this parameter if you would like to restore the container + under a different name. + + + Whether to invoke the operation asynchronously. + + + Optional to propagate + notifications that the operation should be cancelled. + + + A pointed at the undeleted container. + + + A will be thrown if + a failure occurs. + + + + + The Filter Blobs operation enables callers to list blobs across all containers whose tags + match a given search expression. Filter blobs searches across all containers within a + storage account but can be scoped within the expression to a single container. + + For more information, see + + Find Blobs by Tags. + + + The where parameter finds blobs in the storage account whose tags match a given expression. + The expression must evaluate to true for a blob to be returned in the result set. + The storage service supports a subset of the ANSI SQL WHERE clause grammar for the value of the where=expression query parameter. + The following operators are supported: =, >, >=, <, <=, AND. and @container. + Example expression: "tagKey"='tagValue'. + + + Optional to propagate + notifications that the operation should be cancelled. + + + An describing the blobs. + + + A will be thrown if + a failure occurs. + + + + + The Filter Blobs operation enables callers to list blobs across all containers whose tags + match a given search expression. Filter blobs searches across all containers within a + storage account but can be scoped within the expression to a single container. + + For more information, see + + Find Blobs by Tags. + + + The where parameter finds blobs in the storage account whose tags match a given expression. + The expression must evaluate to true for a blob to be returned in the result set. + The storage service supports a subset of the ANSI SQL WHERE clause grammar for the value of the where=expression query parameter. + The following operators are supported: =, >, >=, <, <=, AND. and @container. + Example expression: "tagKey"='tagValue'. + + + Optional to propagate + notifications that the operation should be cancelled. + + + An describing the blobs. + + + A will be thrown if + a failure occurs. + + + + + The + returns a that generates a Blob Account + Shared Access Signature (SAS) based on the Client properties + and parameters passed. The SAS is signed by the + shared key credential of the client. + + To check if the client is able to sign a Service Sas see + . + + For more information, see + + Constructing an Account SAS. + + + Required. Specifies the list of permissions to be associated with the SAS. + See . + + + Required. The time at which the shared access signature becomes invalid. + + + Specifies the resource types associated with the shared access signature. + The user is restricted to operations on the specified resources. + See . + + + A containing the SAS Uri. + + + A will be thrown if a failure occurs. + + + + + The returns a that + generates a Blob Account Shared Access Signature (SAS) based on the + Client properties and builder passed. The SAS is signed by the + shared key credential of the client. + + To check if the client is able to sign a Service Sas see + . + + For more information, see + + Constructing an Account SAS. + + + Used to generate a Shared Access Signature (SAS). + + + A containing the SAS Uri. + + + A will be thrown if a failure occurs. + + + + + The class provides a convenient way to + modify the contents of a instance to point to + different Azure Storage resources like an account, container, or blob. + + For more information, see + + Naming and Referencing Containers, Blobs, and Metadata. + + + + + Gets or sets the scheme name of the URI. + Example: "https" + + + + + Gets or sets the Domain Name System (DNS) host name or IP address + of a server. + + Example: "account.blob.core.windows.net" + + + + + Gets or sets the port number of the URI. + + + + + Gets or sets the Azure Storage account name. + + + + + Gets or sets the name of a blob storage Container. The value + defaults to if not present in the + . + + + + + Gets or sets the name of a blob. The value defaults to + if not present in the . + + + + + Gets or sets the name of a blob snapshot. The value defaults to + if not present in the . + + + + + Gets or sets the name of a blob version. The value defaults to + if not present in the . + + + + + Gets or sets the Shared Access Signature query parameters, or null + if not present in the . + + + + + Gets or sets any query information included in the URI that's not + relevant to addressing Azure storage resources. + + + + + Initializes a new instance of the + class with the specified . + + + The to a storage resource. + + + + + Returns the constructed from the + 's fields. The + property contains the SAS and additional query parameters. + + + + + Returns the display string for the specified + instance. + + + The display string for the specified + instance. + + + + + Azure Blob Storage + + + + + Service operations for Azure Blob Storage + + + + + Sets properties for a storage account's Blob service endpoint, including properties for Storage Analytics and CORS (Cross-Origin Resource Sharing) rules + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + The StorageService properties. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response + + + + Create the Service.SetPropertiesAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + The StorageService properties. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + The Service.SetPropertiesAsync Message. + + + + Create the Service.SetPropertiesAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Service.SetPropertiesAsync Azure.Response. + + + + gets the properties of a storage account's Blob service, including properties for Storage Analytics and CORS (Cross-Origin Resource Sharing) rules. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Storage Service Properties. + + + + Create the Service.GetPropertiesAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + The Service.GetPropertiesAsync Message. + + + + Create the Service.GetPropertiesAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Service.GetPropertiesAsync Azure.Response{Azure.Storage.Blobs.Models.BlobServiceProperties}. + + + + Retrieves statistics related to replication for the Blob service. It is only available on the secondary location endpoint when read-access geo-redundant replication is enabled for the storage account. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Statistics for the storage service. + + + + Create the Service.GetStatisticsAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + The Service.GetStatisticsAsync Message. + + + + Create the Service.GetStatisticsAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Service.GetStatisticsAsync Azure.Response{Azure.Storage.Blobs.Models.BlobServiceStatistics}. + + + + The List Containers Segment operation returns a list of the containers under the specified account + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + Filters the results to return only containers whose name begins with the specified prefix. + 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. + Specifies the maximum number of containers to return. If the request does not specify maxresults, or specifies a value greater than 5000, the server will return up to 5000 items. Note that if the listing operation crosses a partition boundary, then the service will return a continuation token for retrieving the remainder of the results. For this reason, it is possible that the service will return fewer results than specified by maxresults, or than the default of 5000. + Include this parameter to specify that the container's metadata be returned as part of the response body. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + An enumeration of containers + + + + Create the Service.ListBlobContainersSegmentAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + Filters the results to return only containers whose name begins with the specified prefix. + 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. + Specifies the maximum number of containers to return. If the request does not specify maxresults, or specifies a value greater than 5000, the server will return up to 5000 items. Note that if the listing operation crosses a partition boundary, then the service will return a continuation token for retrieving the remainder of the results. For this reason, it is possible that the service will return fewer results than specified by maxresults, or than the default of 5000. + Include this parameter to specify that the container's metadata be returned as part of the response body. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + The Service.ListBlobContainersSegmentAsync Message. + + + + Create the Service.ListBlobContainersSegmentAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Service.ListBlobContainersSegmentAsync Azure.Response{Azure.Storage.Blobs.Models.BlobContainersSegment}. + + + + Retrieves a user delegation key for the Blob service. This is only a valid operation when using bearer token authentication. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Key information + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + A user delegation key + + + + Create the Service.GetUserDelegationKeyAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Key information + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + The Service.GetUserDelegationKeyAsync Message. + + + + Create the Service.GetUserDelegationKeyAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Service.GetUserDelegationKeyAsync Azure.Response{Azure.Storage.Blobs.Models.UserDelegationKey}. + + + + Returns the sku name and account kind + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.AccountInfo} + + + + Create the Service.GetAccountInfoAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The Service.GetAccountInfoAsync Message. + + + + Create the Service.GetAccountInfoAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Service.GetAccountInfoAsync Azure.Response{Azure.Storage.Blobs.Models.AccountInfo}. + + + + The Batch operation allows multiple API calls to be embedded into a single HTTP request. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Initial data + The length of the request. + Required. The value of this header must be multipart/mixed with a batch boundary. Example header value: multipart/mixed; boundary=batch_{GUID} + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobBatchResult} + + + + Create the Service.SubmitBatchAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Initial data + The length of the request. + Required. The value of this header must be multipart/mixed with a batch boundary. Example header value: multipart/mixed; boundary=batch_{GUID} + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + The Service.SubmitBatchAsync Message. + + + + Create the Service.SubmitBatchAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Service.SubmitBatchAsync Azure.Response{Azure.Storage.Blobs.Models.BlobBatchResult}. + + + + The Filter Blobs operation enables callers to list blobs across all containers whose tags match a given search expression. Filter blobs searches across all containers within a storage account but can be scoped within the expression to a single container. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + Filters the results to return only to return only blobs whose tags match the specified expression. + 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. + Specifies the maximum number of containers to return. If the request does not specify maxresults, or specifies a value greater than 5000, the server will return up to 5000 items. Note that if the listing operation crosses a partition boundary, then the service will return a continuation token for retrieving the remainder of the results. For this reason, it is possible that the service will return fewer results than specified by maxresults, or than the default of 5000. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + The result of a Filter Blobs API call + + + + Create the Service.FilterBlobsAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + Filters the results to return only to return only blobs whose tags match the specified expression. + 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. + Specifies the maximum number of containers to return. If the request does not specify maxresults, or specifies a value greater than 5000, the server will return up to 5000 items. Note that if the listing operation crosses a partition boundary, then the service will return a continuation token for retrieving the remainder of the results. For this reason, it is possible that the service will return fewer results than specified by maxresults, or than the default of 5000. + The Service.FilterBlobsAsync Message. + + + + Create the Service.FilterBlobsAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Service.FilterBlobsAsync Azure.Response{Azure.Storage.Blobs.Models.FilterBlobSegment}. + + + + Container operations for Azure Blob Storage + + + + + creates a new container under the specified account. If the container with the same name already exists, the operation fails + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies whether data in the container may be accessed publicly and the level of access + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. + 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. + Optional. Version 2019-07-07 and later. Specifies the default encryption scope to set on the container and use for all future writes. + Optional. Version 2019-07-07 and newer. If true, prevents any request from specifying a different encryption scope than the scope set on the container. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobContainerInfo} + + + + Create the Container.CreateAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies whether data in the container may be accessed publicly and the level of access + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. + 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. + Optional. Version 2019-07-07 and later. Specifies the default encryption scope to set on the container and use for all future writes. + Optional. Version 2019-07-07 and newer. If true, prevents any request from specifying a different encryption scope than the scope set on the container. + The Container.CreateAsync Message. + + + + Create the Container.CreateAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Container.CreateAsync Azure.Response{Azure.Storage.Blobs.Models.BlobContainerInfo}. + + + + returns all user-defined metadata and system properties for the specified container. The data returned does not include the container's list of blobs + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.FlattenedContainerItem} + + + + Create the Container.GetPropertiesAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + The Container.GetPropertiesAsync Message. + + + + Create the Container.GetPropertiesAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Container.GetPropertiesAsync Azure.Response{Azure.Storage.Blobs.Models.FlattenedContainerItem}. + + + + operation marks the specified container for deletion. The container and any blobs contained within it are later deleted during garbage collection + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response + + + + Create the Container.DeleteAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + 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. + The Container.DeleteAsync Message. + + + + Create the Container.DeleteAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Container.DeleteAsync Azure.Response. + + + + operation sets one or more user-defined name-value pairs for the specified container. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobContainerInfo} + + + + Create the Container.SetMetadataAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + 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. + The Container.SetMetadataAsync Message. + + + + Create the Container.SetMetadataAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Container.SetMetadataAsync Azure.Response{Azure.Storage.Blobs.Models.BlobContainerInfo}. + + + + gets the permissions for the specified container. The permissions indicate whether container data may be accessed publicly. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobContainerAccessPolicy} + + + + Create the Container.GetAccessPolicyAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + The Container.GetAccessPolicyAsync Message. + + + + Create the Container.GetAccessPolicyAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Container.GetAccessPolicyAsync Azure.Response{Azure.Storage.Blobs.Models.BlobContainerAccessPolicy}. + + + + sets the permissions for the specified container. The permissions indicate whether blobs in a container may be accessed publicly. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies whether data in the container may be accessed publicly and the level of access + Specifies the version of the operation to use for this request. + the acls for the container + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobContainerInfo} + + + + Create the Container.SetAccessPolicyAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies whether data in the container may be accessed publicly and the level of access + Specifies the version of the operation to use for this request. + the acls for the container + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + 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. + The Container.SetAccessPolicyAsync Message. + + + + Create the Container.SetAccessPolicyAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Container.SetAccessPolicyAsync Azure.Response{Azure.Storage.Blobs.Models.BlobContainerInfo}. + + + + Restores a previously-deleted container. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + Optional. Version 2019-12-12 and later. Specifies the name of the deleted container to restore. + Optional. Version 2019-12-12 and later. Specifies the version of the deleted container to restore. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response + + + + Create the Container.RestoreAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + Optional. Version 2019-12-12 and later. Specifies the name of the deleted container to restore. + Optional. Version 2019-12-12 and later. Specifies the version of the deleted container to restore. + The Container.RestoreAsync Message. + + + + Create the Container.RestoreAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Container.RestoreAsync Azure.Response. + + + + [Update] establishes and manages a lock on a container for delete operations. The lock duration can be 15 to 60 seconds, or can be infinite + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specifies the duration of the lease, in seconds, or negative one (-1) for a lease that never expires. A non-infinite lease can be between 15 and 60 seconds. A lease duration cannot be changed using renew or change. + 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. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobLease} + + + + Create the Container.AcquireLeaseAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specifies the duration of the lease, in seconds, or negative one (-1) for a lease that never expires. A non-infinite lease can be between 15 and 60 seconds. A lease duration cannot be changed using renew or change. + 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. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + 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. + The Container.AcquireLeaseAsync Message. + + + + Create the Container.AcquireLeaseAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Container.AcquireLeaseAsync Azure.Response{Azure.Storage.Blobs.Models.BlobLease}. + + + + [Update] establishes and manages a lock on a container for delete operations. The lock duration can be 15 to 60 seconds, or can be infinite + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the current lease ID on the resource. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobContainerInfo} + + + + Create the Container.ReleaseLeaseAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the current lease ID on the resource. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + 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. + The Container.ReleaseLeaseAsync Message. + + + + Create the Container.ReleaseLeaseAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Container.ReleaseLeaseAsync Azure.Response{Azure.Storage.Blobs.Models.BlobContainerInfo}. + + + + [Update] establishes and manages a lock on a container for delete operations. The lock duration can be 15 to 60 seconds, or can be infinite + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the current lease ID on the resource. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobLease} + + + + Create the Container.RenewLeaseAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the current lease ID on the resource. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + 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. + The Container.RenewLeaseAsync Message. + + + + Create the Container.RenewLeaseAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Container.RenewLeaseAsync Azure.Response{Azure.Storage.Blobs.Models.BlobLease}. + + + + [Update] establishes and manages a lock on a container for delete operations. The lock duration can be 15 to 60 seconds, or can be infinite + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + For a break operation, proposed duration the lease should continue before it is broken, in seconds, between 0 and 60. This break period is only used if it is shorter than the time remaining on the lease. If longer, the time remaining on the lease is used. A new lease will not be available before the break period has expired, but the lease may be held for longer than the break period. If this header does not appear with a break operation, a fixed-duration lease breaks after the remaining lease period elapses, and an infinite lease breaks immediately. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BrokenLease} + + + + Create the Container.BreakLeaseAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + For a break operation, proposed duration the lease should continue before it is broken, in seconds, between 0 and 60. This break period is only used if it is shorter than the time remaining on the lease. If longer, the time remaining on the lease is used. A new lease will not be available before the break period has expired, but the lease may be held for longer than the break period. If this header does not appear with a break operation, a fixed-duration lease breaks after the remaining lease period elapses, and an infinite lease breaks immediately. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + 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. + The Container.BreakLeaseAsync Message. + + + + Create the Container.BreakLeaseAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Container.BreakLeaseAsync Azure.Response{Azure.Storage.Blobs.Models.BrokenLease}. + + + + [Update] establishes and manages a lock on a container for delete operations. The lock duration can be 15 to 60 seconds, or can be infinite + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the current lease ID on the resource. + 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. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobLease} + + + + Create the Container.ChangeLeaseAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the current lease ID on the resource. + 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. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + 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. + The Container.ChangeLeaseAsync Message. + + + + Create the Container.ChangeLeaseAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Container.ChangeLeaseAsync Azure.Response{Azure.Storage.Blobs.Models.BlobLease}. + + + + [Update] The List Blobs operation returns a list of the blobs under the specified container + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + Filters the results to return only containers whose name begins with the specified prefix. + 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. + Specifies the maximum number of containers to return. If the request does not specify maxresults, or specifies a value greater than 5000, the server will return up to 5000 items. Note that if the listing operation crosses a partition boundary, then the service will return a continuation token for retrieving the remainder of the results. For this reason, it is possible that the service will return fewer results than specified by maxresults, or than the default of 5000. + Include this parameter to specify one or more datasets to include in the response. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + An enumeration of blobs + + + + Create the Container.ListBlobsFlatSegmentAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + Filters the results to return only containers whose name begins with the specified prefix. + 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. + Specifies the maximum number of containers to return. If the request does not specify maxresults, or specifies a value greater than 5000, the server will return up to 5000 items. Note that if the listing operation crosses a partition boundary, then the service will return a continuation token for retrieving the remainder of the results. For this reason, it is possible that the service will return fewer results than specified by maxresults, or than the default of 5000. + Include this parameter to specify one or more datasets to include in the response. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + The Container.ListBlobsFlatSegmentAsync Message. + + + + Create the Container.ListBlobsFlatSegmentAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Container.ListBlobsFlatSegmentAsync Azure.Response{Azure.Storage.Blobs.Models.BlobsFlatSegment}. + + + + [Update] The List Blobs operation returns a list of the blobs under the specified container + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + Filters the results to return only containers whose name begins with the specified prefix. + 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. + 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. + Specifies the maximum number of containers to return. If the request does not specify maxresults, or specifies a value greater than 5000, the server will return up to 5000 items. Note that if the listing operation crosses a partition boundary, then the service will return a continuation token for retrieving the remainder of the results. For this reason, it is possible that the service will return fewer results than specified by maxresults, or than the default of 5000. + Include this parameter to specify one or more datasets to include in the response. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + An enumeration of blobs + + + + Create the Container.ListBlobsHierarchySegmentAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + Filters the results to return only containers whose name begins with the specified prefix. + 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. + 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. + Specifies the maximum number of containers to return. If the request does not specify maxresults, or specifies a value greater than 5000, the server will return up to 5000 items. Note that if the listing operation crosses a partition boundary, then the service will return a continuation token for retrieving the remainder of the results. For this reason, it is possible that the service will return fewer results than specified by maxresults, or than the default of 5000. + Include this parameter to specify one or more datasets to include in the response. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + The Container.ListBlobsHierarchySegmentAsync Message. + + + + Create the Container.ListBlobsHierarchySegmentAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Container.ListBlobsHierarchySegmentAsync Azure.Response{Azure.Storage.Blobs.Models.BlobsHierarchySegment}. + + + + Blob operations for Azure Blob Storage + + + + + The Download operation reads or downloads a blob from the system, including its metadata and properties. You can also call Download to read a snapshot. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to retrieve. For more information on working with blob snapshots, see Creating a Snapshot of a Blob. + The version id parameter is an opaque DateTime value that, when present, specifies the version of the blob to operate on. It's for service version 2019-10-10 and newer. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Return only the bytes of the blob in the specified range. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + When set to true and specified together with the Range, the service returns the MD5 hash for the range, as long as the range is less than or equal to 4 MB in size. + When set to true and specified together with the Range, the service returns the CRC64 hash for the range, as long as the range is less than or equal to 4 MB in size. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.FlattenedDownloadProperties} + + + + Create the Blob.DownloadAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to retrieve. For more information on working with blob snapshots, see Creating a Snapshot of a Blob. + The version id parameter is an opaque DateTime value that, when present, specifies the version of the blob to operate on. It's for service version 2019-10-10 and newer. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Return only the bytes of the blob in the specified range. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + When set to true and specified together with the Range, the service returns the MD5 hash for the range, as long as the range is less than or equal to 4 MB in size. + When set to true and specified together with the Range, the service returns the CRC64 hash for the range, as long as the range is less than or equal to 4 MB in size. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + The Blob.DownloadAsync Message. + + + + Create the Blob.DownloadAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.DownloadAsync Azure.Response{Azure.Storage.Blobs.Models.FlattenedDownloadProperties}. + + + + The Get Properties operation returns all user-defined metadata, standard HTTP properties, and system properties for the blob. It does not return the content of the blob. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to retrieve. For more information on working with blob snapshots, see Creating a Snapshot of a Blob. + The version id parameter is an opaque DateTime value that, when present, specifies the version of the blob to operate on. It's for service version 2019-10-10 and newer. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobPropertiesInternal} + + + + Create the Blob.GetPropertiesAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to retrieve. For more information on working with blob snapshots, see Creating a Snapshot of a Blob. + The version id parameter is an opaque DateTime value that, when present, specifies the version of the blob to operate on. It's for service version 2019-10-10 and newer. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + The Blob.GetPropertiesAsync Message. + + + + Create the Blob.GetPropertiesAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.GetPropertiesAsync Azure.Response{Azure.Storage.Blobs.Models.BlobPropertiesInternal}. + + + + If the storage account's soft delete feature is disabled then, when a blob is deleted, it is permanently removed from the storage account. If the storage account's soft delete feature is enabled, then, when a blob is deleted, it is marked for deletion and becomes inaccessible immediately. However, the blob service retains the blob or snapshot for the number of days specified by the DeleteRetentionPolicy section of [Storage service properties] (Set-Blob-Service-Properties.md). After the specified number of days has passed, the blob's data is permanently removed from the storage account. Note that you continue to be charged for the soft-deleted blob's storage until it is permanently removed. Use the List Blobs API and specify the "include=deleted" query parameter to discover which blobs and snapshots have been soft deleted. You can then use the Undelete Blob API to restore a soft-deleted blob. All other operations on a soft-deleted blob or snapshot causes the service to return an HTTP status code of 404 (ResourceNotFound). + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to retrieve. For more information on working with blob snapshots, see Creating a Snapshot of a Blob. + The version id parameter is an opaque DateTime value that, when present, specifies the version of the blob to operate on. It's for service version 2019-10-10 and newer. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Required if the blob has associated snapshots. Specify one of the following two options: include: Delete the base blob and all of its snapshots. only: Delete only the blob's snapshots and not the blob itself + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Optional. Only possible value is 'permanent', which specifies to permanently delete a blob if blob soft delete is enabled. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response + + + + Create the Blob.DeleteAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to retrieve. For more information on working with blob snapshots, see Creating a Snapshot of a Blob. + The version id parameter is an opaque DateTime value that, when present, specifies the version of the blob to operate on. It's for service version 2019-10-10 and newer. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Required if the blob has associated snapshots. Specify one of the following two options: include: Delete the base blob and all of its snapshots. only: Delete only the blob's snapshots and not the blob itself + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Optional. Only possible value is 'permanent', which specifies to permanently delete a blob if blob soft delete is enabled. + The Blob.DeleteAsync Message. + + + + Create the Blob.DeleteAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.DeleteAsync Azure.Response. + + + + Set the owner, group, permissions, or access control list for a blob. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Optional. The owner of the blob or directory. + Optional. The owning group of the blob or directory. + 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. + 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]". + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobSetAccessControlResult} + + + + Create the Blob.SetAccessControlAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Optional. The owner of the blob or directory. + Optional. The owning group of the blob or directory. + 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. + 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]". + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + 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. + The Blob.SetAccessControlAsync Message. + + + + Create the Blob.SetAccessControlAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.SetAccessControlAsync Azure.Response{Azure.Storage.Blobs.Models.BlobSetAccessControlResult}. + + + + Get the owner, group, permissions, or access control list for a blob. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. Valid only when Hierarchical Namespace is enabled for the account. If "true", the 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. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobGetAccessControlResult} + + + + Create the Blob.GetAccessControlAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. Valid only when Hierarchical Namespace is enabled for the account. If "true", the 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. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + 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. + The Blob.GetAccessControlAsync Message. + + + + Create the Blob.GetAccessControlAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.GetAccessControlAsync Azure.Response{Azure.Storage.Blobs.Models.BlobGetAccessControlResult}. + + + + Rename a blob/file. 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: "*". + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + The file or directory to be renamed. The value must have the following format: "/{filesysystem}/{path}". If "x-ms-properties" is specified, the properties will overwrite the existing properties; otherwise, the existing properties will be preserved. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Determines the behavior of the rename operation + Optional. User-defined properties to be stored 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 base64 encoded. + 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. + Only valid if Hierarchical Namespace is enabled for the account. This umask restricts permission settings for file and directory, and will only be applied when default Acl does not exist in parent directory. If the umask bit has set, it means that the corresponding permission will be disabled. Otherwise the corresponding permission will be determined by the permission. A 4-digit octal notation (e.g. 0022) is supported here. If no umask was specified, a default umask - 0027 will be used. + Cache control for given resource + Content type for given resource + Content encoding for given resource + Content language for given resource + Content disposition for given resource + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + A lease ID for the source path. If specified, the source path must have an active lease and the lease ID must match. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobRenameResult} + + + + Create the Blob.RenameAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + The file or directory to be renamed. The value must have the following format: "/{filesysystem}/{path}". If "x-ms-properties" is specified, the properties will overwrite the existing properties; otherwise, the existing properties will be preserved. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Determines the behavior of the rename operation + Optional. User-defined properties to be stored 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 base64 encoded. + 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. + Only valid if Hierarchical Namespace is enabled for the account. This umask restricts permission settings for file and directory, and will only be applied when default Acl does not exist in parent directory. If the umask bit has set, it means that the corresponding permission will be disabled. Otherwise the corresponding permission will be determined by the permission. A 4-digit octal notation (e.g. 0022) is supported here. If no umask was specified, a default umask - 0027 will be used. + Cache control for given resource + Content type for given resource + Content encoding for given resource + Content language for given resource + Content disposition for given resource + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + A lease ID for the source path. If specified, the source path must have an active lease and the lease ID must match. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + 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. + The Blob.RenameAsync Message. + + + + Create the Blob.RenameAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.RenameAsync Azure.Response{Azure.Storage.Blobs.Models.BlobRenameResult}. + + + + Undelete a blob that was previously soft deleted + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response + + + + Create the Blob.UndeleteAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + The Blob.UndeleteAsync Message. + + + + Create the Blob.UndeleteAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.UndeleteAsync Azure.Response. + + + + Sets the time a blob will expire and be deleted. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + Required. Indicates mode of the expiry time + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + The time to set the blob to expiry + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobSetExpiryInternal} + + + + Create the Blob.SetExpiryAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + Required. Indicates mode of the expiry time + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + The time to set the blob to expiry + The Blob.SetExpiryAsync Message. + + + + Create the Blob.SetExpiryAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.SetExpiryAsync Azure.Response{Azure.Storage.Blobs.Models.BlobSetExpiryInternal}. + + + + The Set HTTP Headers operation sets system properties on the blob + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. Sets the blob's cache control. If specified, this property is stored with the blob and returned with a read request. + Optional. Sets the blob's content type. If specified, this property is stored with the blob and returned with a read request. + Optional. An MD5 hash of the blob content. Note that this hash is not validated, as the hashes for the individual blocks were validated when each was uploaded. + Optional. Sets the blob's content encoding. If specified, this property is stored with the blob and returned with a read request. + Optional. Set the blob's content language. If specified, this property is stored with the blob and returned with a read request. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + Optional. Sets the blob's Content-Disposition header. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.SetHttpHeadersOperation} + + + + Create the Blob.SetHttpHeadersAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. Sets the blob's cache control. If specified, this property is stored with the blob and returned with a read request. + Optional. Sets the blob's content type. If specified, this property is stored with the blob and returned with a read request. + Optional. An MD5 hash of the blob content. Note that this hash is not validated, as the hashes for the individual blocks were validated when each was uploaded. + Optional. Sets the blob's content encoding. If specified, this property is stored with the blob and returned with a read request. + Optional. Set the blob's content language. If specified, this property is stored with the blob and returned with a read request. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + Optional. Sets the blob's Content-Disposition header. + 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. + The Blob.SetHttpHeadersAsync Message. + + + + Create the Blob.SetHttpHeadersAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.SetHttpHeadersAsync Azure.Response{Azure.Storage.Blobs.Models.SetHttpHeadersOperation}. + + + + The Set Blob Metadata operation sets user-defined metadata for the specified blob as one or more name-value pairs + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.SetMetadataOperation} + + + + Create the Blob.SetMetadataAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + The Blob.SetMetadataAsync Message. + + + + Create the Blob.SetMetadataAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.SetMetadataAsync Azure.Response{Azure.Storage.Blobs.Models.SetMetadataOperation}. + + + + [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete operations + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specifies the duration of the lease, in seconds, or negative one (-1) for a lease that never expires. A non-infinite lease can be between 15 and 60 seconds. A lease duration cannot be changed using renew or change. + 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. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobLease} + + + + Create the Blob.AcquireLeaseAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specifies the duration of the lease, in seconds, or negative one (-1) for a lease that never expires. A non-infinite lease can be between 15 and 60 seconds. A lease duration cannot be changed using renew or change. + 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. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + The Blob.AcquireLeaseAsync Message. + + + + Create the Blob.AcquireLeaseAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.AcquireLeaseAsync Azure.Response{Azure.Storage.Blobs.Models.BlobLease}. + + + + [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete operations + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the current lease ID on the resource. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobInfo} + + + + Create the Blob.ReleaseLeaseAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the current lease ID on the resource. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + The Blob.ReleaseLeaseAsync Message. + + + + Create the Blob.ReleaseLeaseAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.ReleaseLeaseAsync Azure.Response{Azure.Storage.Blobs.Models.BlobInfo}. + + + + [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete operations + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the current lease ID on the resource. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobLease} + + + + Create the Blob.RenewLeaseAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the current lease ID on the resource. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + The Blob.RenewLeaseAsync Message. + + + + Create the Blob.RenewLeaseAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.RenewLeaseAsync Azure.Response{Azure.Storage.Blobs.Models.BlobLease}. + + + + [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete operations + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the current lease ID on the resource. + 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. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobLease} + + + + Create the Blob.ChangeLeaseAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the current lease ID on the resource. + 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. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + The Blob.ChangeLeaseAsync Message. + + + + Create the Blob.ChangeLeaseAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.ChangeLeaseAsync Azure.Response{Azure.Storage.Blobs.Models.BlobLease}. + + + + [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete operations + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + For a break operation, proposed duration the lease should continue before it is broken, in seconds, between 0 and 60. This break period is only used if it is shorter than the time remaining on the lease. If longer, the time remaining on the lease is used. A new lease will not be available before the break period has expired, but the lease may be held for longer than the break period. If this header does not appear with a break operation, a fixed-duration lease breaks after the remaining lease period elapses, and an infinite lease breaks immediately. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BrokenLease} + + + + Create the Blob.BreakLeaseAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + For a break operation, proposed duration the lease should continue before it is broken, in seconds, between 0 and 60. This break period is only used if it is shorter than the time remaining on the lease. If longer, the time remaining on the lease is used. A new lease will not be available before the break period has expired, but the lease may be held for longer than the break period. If this header does not appear with a break operation, a fixed-duration lease breaks after the remaining lease period elapses, and an infinite lease breaks immediately. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + The Blob.BreakLeaseAsync Message. + + + + Create the Blob.BreakLeaseAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.BreakLeaseAsync Azure.Response{Azure.Storage.Blobs.Models.BrokenLease}. + + + + The Create Snapshot operation creates a read-only snapshot of a blob + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobSnapshotInfo} + + + + Create the Blob.CreateSnapshotAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + The Blob.CreateSnapshotAsync Message. + + + + Create the Blob.CreateSnapshotAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.CreateSnapshotAsync Azure.Response{Azure.Storage.Blobs.Models.BlobSnapshotInfo}. + + + + The Start Copy From URL operation copies a blob or an internet resource to a new blob. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the name of the source page blob snapshot. This value is a URL of up to 2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would appear in a request URI. The source blob must either be public or must be authenticated via a shared access signature. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. + Optional. Indicates the tier to be set on the blob. + Optional: Indicates the priority with which to rehydrate an archived blob. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + Optional. A URL encoded query param string which specifies the tags to be created with the Blob object. e.g. TagName1=TagValue1&TagName2=TagValue2. The x-ms-tags header may contain up to 2kb of tags. + Overrides the sealed state of the destination blob. Service version 2019-12-12 and newer. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobCopyInfo} + + + + Create the Blob.StartCopyFromUriAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the name of the source page blob snapshot. This value is a URL of up to 2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would appear in a request URI. The source blob must either be public or must be authenticated via a shared access signature. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. + Optional. Indicates the tier to be set on the blob. + Optional: Indicates the priority with which to rehydrate an archived blob. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + Optional. A URL encoded query param string which specifies the tags to be created with the Blob object. e.g. TagName1=TagValue1&TagName2=TagValue2. The x-ms-tags header may contain up to 2kb of tags. + Overrides the sealed state of the destination blob. Service version 2019-12-12 and newer. + The Blob.StartCopyFromUriAsync Message. + + + + Create the Blob.StartCopyFromUriAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.StartCopyFromUriAsync Azure.Response{Azure.Storage.Blobs.Models.BlobCopyInfo}. + + + + The Copy From URL operation copies a blob or an internet resource to a new blob. It will not return a response until the copy is complete. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the name of the source page blob snapshot. This value is a URL of up to 2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would appear in a request URI. The source blob must either be public or must be authenticated via a shared access signature. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. + Optional. Indicates the tier to be set on the blob. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + Specify the md5 calculated for the range of bytes that must be read from the copy source. + Optional. A URL encoded query param string which specifies the tags to be created with the Blob object. e.g. TagName1=TagValue1&TagName2=TagValue2. The x-ms-tags header may contain up to 2kb of tags. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobCopyInfo} + + + + Create the Blob.CopyFromUriAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the name of the source page blob snapshot. This value is a URL of up to 2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would appear in a request URI. The source blob must either be public or must be authenticated via a shared access signature. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. + Optional. Indicates the tier to be set on the blob. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + Specify the md5 calculated for the range of bytes that must be read from the copy source. + Optional. A URL encoded query param string which specifies the tags to be created with the Blob object. e.g. TagName1=TagValue1&TagName2=TagValue2. The x-ms-tags header may contain up to 2kb of tags. + The Blob.CopyFromUriAsync Message. + + + + Create the Blob.CopyFromUriAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.CopyFromUriAsync Azure.Response{Azure.Storage.Blobs.Models.BlobCopyInfo}. + + + + The Abort Copy From URL operation aborts a pending Copy From URL operation, and leaves a destination blob with zero length and full metadata. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + The copy identifier provided in the x-ms-copy-id header of the original Copy Blob operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response + + + + Create the Blob.AbortCopyFromUriAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + The copy identifier provided in the x-ms-copy-id header of the original Copy Blob operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + The Blob.AbortCopyFromUriAsync Message. + + + + Create the Blob.AbortCopyFromUriAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.AbortCopyFromUriAsync Azure.Response. + + + + The Set Tier operation sets the tier on a blob. The operation is allowed on a page blob in a premium storage account and on a block blob in a blob storage account (locally redundant storage only). A premium page blob's tier determines the allowed size, IOPS, and bandwidth of the blob. A block blob's tier determines Hot/Cool/Archive storage type. This operation does not update the blob's ETag. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Indicates the tier to be set on the blob. + Specifies the version of the operation to use for this request. + The snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to retrieve. For more information on working with blob snapshots, see Creating a Snapshot of a Blob. + The version id parameter is an opaque DateTime value that, when present, specifies the version of the blob to operate on. It's for service version 2019-10-10 and newer. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional: Indicates the priority with which to rehydrate an archived blob. + 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. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response + + + + Create the Blob.SetAccessTierAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Indicates the tier to be set on the blob. + Specifies the version of the operation to use for this request. + The snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to retrieve. For more information on working with blob snapshots, see Creating a Snapshot of a Blob. + The version id parameter is an opaque DateTime value that, when present, specifies the version of the blob to operate on. It's for service version 2019-10-10 and newer. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional: Indicates the priority with which to rehydrate an archived blob. + 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. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + The Blob.SetAccessTierAsync Message. + + + + Create the Blob.SetAccessTierAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.SetAccessTierAsync Azure.Response. + + + + The Query operation enables users to select/project on blob data by providing simple query expressions. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + the query request + The snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to retrieve. For more information on working with blob snapshots, see Creating a Snapshot of a Blob. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobQueryResult} + + + + Create the Blob.QueryAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + the query request + The snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to retrieve. For more information on working with blob snapshots, see Creating a Snapshot of a Blob. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + The Blob.QueryAsync Message. + + + + Create the Blob.QueryAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.QueryAsync Azure.Response{Azure.Storage.Blobs.Models.BlobQueryResult}. + + + + The Get Tags operation enables users to get the tags associated with a blob. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + The snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to retrieve. For more information on working with blob snapshots, see Creating a Snapshot of a Blob. + The version id parameter is an opaque DateTime value that, when present, specifies the version of the blob to operate on. It's for service version 2019-10-10 and newer. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Blob tags + + + + Create the Blob.GetTagsAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + The snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to retrieve. For more information on working with blob snapshots, see Creating a Snapshot of a Blob. + The version id parameter is an opaque DateTime value that, when present, specifies the version of the blob to operate on. It's for service version 2019-10-10 and newer. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + The Blob.GetTagsAsync Message. + + + + Create the Blob.GetTagsAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.GetTagsAsync Azure.Response{Azure.Storage.Blobs.Models.BlobTags}. + + + + The Set Tags operation enables users to set tags on a blob. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + The version id parameter is an opaque DateTime value that, when present, specifies the version of the blob to operate on. It's for service version 2019-10-10 and newer. + Specify the transactional md5 for the body, to be validated by the service. + Specify the transactional crc64 for the body, to be validated by the service. + 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. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Blob tags + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response + + + + Create the Blob.SetTagsAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + The version id parameter is an opaque DateTime value that, when present, specifies the version of the blob to operate on. It's for service version 2019-10-10 and newer. + Specify the transactional md5 for the body, to be validated by the service. + Specify the transactional crc64 for the body, to be validated by the service. + 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. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Blob tags + The Blob.SetTagsAsync Message. + + + + Create the Blob.SetTagsAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Blob.SetTagsAsync Azure.Response. + + + + PageBlob operations for Azure Blob Storage + + + + + The Create operation creates a new page blob. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + The length of the request. + This header specifies the maximum size for the page blob, up to 1 TB. The page blob size must be aligned to a 512-byte boundary. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. Indicates the tier to be set on the page blob. + Optional. Sets the blob's content type. If specified, this property is stored with the blob and returned with a read request. + Optional. Sets the blob's content encoding. If specified, this property is stored with the blob and returned with a read request. + Optional. Set the blob's content language. If specified, this property is stored with the blob and returned with a read request. + Optional. An MD5 hash of the blob content. Note that this hash is not validated, as the hashes for the individual blocks were validated when each was uploaded. + Optional. Sets the blob's cache control. If specified, this property is stored with the blob and returned with a read request. + Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Optional. Sets the blob's Content-Disposition header. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + Set for page blobs only. The sequence number is a user-controlled value that you can use to track requests. The value of the sequence number must be between 0 and 2^63 - 1. + 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. + Optional. A URL encoded query param string which specifies the tags to be created with the Blob object. e.g. TagName1=TagValue1&TagName2=TagValue2. The x-ms-tags header may contain up to 2kb of tags. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobContentInfo} + + + + Create the PageBlob.CreateAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + The length of the request. + This header specifies the maximum size for the page blob, up to 1 TB. The page blob size must be aligned to a 512-byte boundary. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. Indicates the tier to be set on the page blob. + Optional. Sets the blob's content type. If specified, this property is stored with the blob and returned with a read request. + Optional. Sets the blob's content encoding. If specified, this property is stored with the blob and returned with a read request. + Optional. Set the blob's content language. If specified, this property is stored with the blob and returned with a read request. + Optional. An MD5 hash of the blob content. Note that this hash is not validated, as the hashes for the individual blocks were validated when each was uploaded. + Optional. Sets the blob's cache control. If specified, this property is stored with the blob and returned with a read request. + Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Optional. Sets the blob's Content-Disposition header. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + Set for page blobs only. The sequence number is a user-controlled value that you can use to track requests. The value of the sequence number must be between 0 and 2^63 - 1. + 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. + Optional. A URL encoded query param string which specifies the tags to be created with the Blob object. e.g. TagName1=TagValue1&TagName2=TagValue2. The x-ms-tags header may contain up to 2kb of tags. + The PageBlob.CreateAsync Message. + + + + Create the PageBlob.CreateAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The PageBlob.CreateAsync Azure.Response{Azure.Storage.Blobs.Models.BlobContentInfo}. + + + + The Upload Pages operation writes a range of pages to a page blob + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Initial data + The length of the request. + Specifies the version of the operation to use for this request. + Specify the transactional md5 for the body, to be validated by the service. + Specify the transactional crc64 for the body, to be validated by the service. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Return only the bytes of the blob in the specified range. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + Specify this header value to operate only on a blob if it has a sequence number less than or equal to the specified. + Specify this header value to operate only on a blob if it has a sequence number less than the specified. + Specify this header value to operate only on a blob if it has the specified sequence number. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.PageInfo} + + + + Create the PageBlob.UploadPagesAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Initial data + The length of the request. + Specifies the version of the operation to use for this request. + Specify the transactional md5 for the body, to be validated by the service. + Specify the transactional crc64 for the body, to be validated by the service. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Return only the bytes of the blob in the specified range. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + Specify this header value to operate only on a blob if it has a sequence number less than or equal to the specified. + Specify this header value to operate only on a blob if it has a sequence number less than the specified. + Specify this header value to operate only on a blob if it has the specified sequence number. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + The PageBlob.UploadPagesAsync Message. + + + + Create the PageBlob.UploadPagesAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The PageBlob.UploadPagesAsync Azure.Response{Azure.Storage.Blobs.Models.PageInfo}. + + + + The Clear Pages operation clears a set of pages from a page blob + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + The length of the request. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Return only the bytes of the blob in the specified range. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + Specify this header value to operate only on a blob if it has a sequence number less than or equal to the specified. + Specify this header value to operate only on a blob if it has a sequence number less than the specified. + Specify this header value to operate only on a blob if it has the specified sequence number. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.PageInfo} + + + + Create the PageBlob.ClearPagesAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + The length of the request. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Return only the bytes of the blob in the specified range. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + Specify this header value to operate only on a blob if it has a sequence number less than or equal to the specified. + Specify this header value to operate only on a blob if it has a sequence number less than the specified. + Specify this header value to operate only on a blob if it has the specified sequence number. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + The PageBlob.ClearPagesAsync Message. + + + + Create the PageBlob.ClearPagesAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The PageBlob.ClearPagesAsync Azure.Response{Azure.Storage.Blobs.Models.PageInfo}. + + + + The Upload Pages operation writes a range of pages to a page blob where the contents are read from a URL + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specify a URL to the copy source. + Bytes of source data in the specified range. The length of this range should match the ContentLength header and x-ms-range/Range destination range header. + The length of the request. + The range of bytes to which the source range would be written. The range should be 512 aligned and range-end is required. + Specifies the version of the operation to use for this request. + Specify the md5 calculated for the range of bytes that must be read from the copy source. + Specify the crc64 calculated for the range of bytes that must be read from the copy source. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify this header value to operate only on a blob if it has a sequence number less than or equal to the specified. + Specify this header value to operate only on a blob if it has a sequence number less than the specified. + Specify this header value to operate only on a blob if it has the specified sequence number. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.PageInfo} + + + + Create the PageBlob.UploadPagesFromUriAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specify a URL to the copy source. + Bytes of source data in the specified range. The length of this range should match the ContentLength header and x-ms-range/Range destination range header. + The length of the request. + The range of bytes to which the source range would be written. The range should be 512 aligned and range-end is required. + Specifies the version of the operation to use for this request. + Specify the md5 calculated for the range of bytes that must be read from the copy source. + Specify the crc64 calculated for the range of bytes that must be read from the copy source. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify this header value to operate only on a blob if it has a sequence number less than or equal to the specified. + Specify this header value to operate only on a blob if it has a sequence number less than the specified. + Specify this header value to operate only on a blob if it has the specified sequence number. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + 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. + The PageBlob.UploadPagesFromUriAsync Message. + + + + Create the PageBlob.UploadPagesFromUriAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The PageBlob.UploadPagesFromUriAsync Azure.Response{Azure.Storage.Blobs.Models.PageInfo}. + + + + The Get Page Ranges operation returns the list of valid page ranges for a page blob or snapshot of a page blob + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to retrieve. For more information on working with blob snapshots, see Creating a Snapshot of a Blob. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Return only the bytes of the blob in the specified range. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.PageRangesInfoInternal} + + + + Create the PageBlob.GetPageRangesAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to retrieve. For more information on working with blob snapshots, see Creating a Snapshot of a Blob. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Return only the bytes of the blob in the specified range. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + The PageBlob.GetPageRangesAsync Message. + + + + Create the PageBlob.GetPageRangesAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The PageBlob.GetPageRangesAsync Azure.Response{Azure.Storage.Blobs.Models.PageRangesInfoInternal}. + + + + The Get Page Ranges Diff operation returns the list of valid page ranges for a page blob that were changed between target blob and previous snapshot. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to retrieve. For more information on working with blob snapshots, see Creating a Snapshot of a Blob. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional in version 2015-07-08 and newer. The prevsnapshot parameter is a DateTime value that specifies that the response will contain only pages that were changed between target blob and previous snapshot. Changed pages include both updated and cleared pages. The target blob may be a snapshot, as long as the snapshot specified by prevsnapshot is the older of the two. Note that incremental snapshots are currently supported only for blobs created on or after January 1, 2016. + Optional. This header is only supported in service versions 2019-04-19 and after and specifies the URL of a previous snapshot of the target blob. The response will only contain pages that were changed between the target blob and its previous snapshot. + Return only the bytes of the blob in the specified range. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.PageRangesInfoInternal} + + + + Create the PageBlob.GetPageRangesDiffAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to retrieve. For more information on working with blob snapshots, see Creating a Snapshot of a Blob. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional in version 2015-07-08 and newer. The prevsnapshot parameter is a DateTime value that specifies that the response will contain only pages that were changed between target blob and previous snapshot. Changed pages include both updated and cleared pages. The target blob may be a snapshot, as long as the snapshot specified by prevsnapshot is the older of the two. Note that incremental snapshots are currently supported only for blobs created on or after January 1, 2016. + Optional. This header is only supported in service versions 2019-04-19 and after and specifies the URL of a previous snapshot of the target blob. The response will only contain pages that were changed between the target blob and its previous snapshot. + Return only the bytes of the blob in the specified range. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + The PageBlob.GetPageRangesDiffAsync Message. + + + + Create the PageBlob.GetPageRangesDiffAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The PageBlob.GetPageRangesDiffAsync Azure.Response{Azure.Storage.Blobs.Models.PageRangesInfoInternal}. + + + + Resize the Blob + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + This header specifies the maximum size for the page blob, up to 1 TB. The page blob size must be aligned to a 512-byte boundary. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.PageBlobInfo} + + + + Create the PageBlob.ResizeAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + This header specifies the maximum size for the page blob, up to 1 TB. The page blob size must be aligned to a 512-byte boundary. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + The PageBlob.ResizeAsync Message. + + + + Create the PageBlob.ResizeAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The PageBlob.ResizeAsync Azure.Response{Azure.Storage.Blobs.Models.PageBlobInfo}. + + + + Update the sequence number of the blob + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Required if the x-ms-blob-sequence-number header is set for the request. This property applies to page blobs only. This property indicates how the service should modify the blob's sequence number + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + Set for page blobs only. The sequence number is a user-controlled value that you can use to track requests. The value of the sequence number must be between 0 and 2^63 - 1. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.PageBlobInfo} + + + + Create the PageBlob.UpdateSequenceNumberAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Required if the x-ms-blob-sequence-number header is set for the request. This property applies to page blobs only. This property indicates how the service should modify the blob's sequence number + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + Set for page blobs only. The sequence number is a user-controlled value that you can use to track requests. The value of the sequence number must be between 0 and 2^63 - 1. + 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. + The PageBlob.UpdateSequenceNumberAsync Message. + + + + Create the PageBlob.UpdateSequenceNumberAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The PageBlob.UpdateSequenceNumberAsync Azure.Response{Azure.Storage.Blobs.Models.PageBlobInfo}. + + + + The Copy Incremental operation copies a snapshot of the source page blob to a destination page blob. The snapshot is copied such that only the differential changes between the previously copied snapshot are transferred to the destination. The copied snapshots are complete copies of the original snapshot and can be read or copied from as usual. This API is supported since REST version 2016-05-31. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the name of the source page blob snapshot. This value is a URL of up to 2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would appear in a request URI. The source blob must either be public or must be authenticated via a shared access signature. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobCopyInfo} + + + + Create the PageBlob.CopyIncrementalAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the name of the source page blob snapshot. This value is a URL of up to 2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would appear in a request URI. The source blob must either be public or must be authenticated via a shared access signature. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + The PageBlob.CopyIncrementalAsync Message. + + + + Create the PageBlob.CopyIncrementalAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The PageBlob.CopyIncrementalAsync Azure.Response{Azure.Storage.Blobs.Models.BlobCopyInfo}. + + + + AppendBlob operations for Azure Blob Storage + + + + + The Create Append Blob operation creates a new append blob. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + The length of the request. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. Sets the blob's content type. If specified, this property is stored with the blob and returned with a read request. + Optional. Sets the blob's content encoding. If specified, this property is stored with the blob and returned with a read request. + Optional. Set the blob's content language. If specified, this property is stored with the blob and returned with a read request. + Optional. An MD5 hash of the blob content. Note that this hash is not validated, as the hashes for the individual blocks were validated when each was uploaded. + Optional. Sets the blob's cache control. If specified, this property is stored with the blob and returned with a read request. + Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Optional. Sets the blob's Content-Disposition header. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Optional. A URL encoded query param string which specifies the tags to be created with the Blob object. e.g. TagName1=TagValue1&TagName2=TagValue2. The x-ms-tags header may contain up to 2kb of tags. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobContentInfo} + + + + Create the AppendBlob.CreateAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + The length of the request. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. Sets the blob's content type. If specified, this property is stored with the blob and returned with a read request. + Optional. Sets the blob's content encoding. If specified, this property is stored with the blob and returned with a read request. + Optional. Set the blob's content language. If specified, this property is stored with the blob and returned with a read request. + Optional. An MD5 hash of the blob content. Note that this hash is not validated, as the hashes for the individual blocks were validated when each was uploaded. + Optional. Sets the blob's cache control. If specified, this property is stored with the blob and returned with a read request. + Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Optional. Sets the blob's Content-Disposition header. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Optional. A URL encoded query param string which specifies the tags to be created with the Blob object. e.g. TagName1=TagValue1&TagName2=TagValue2. The x-ms-tags header may contain up to 2kb of tags. + The AppendBlob.CreateAsync Message. + + + + Create the AppendBlob.CreateAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The AppendBlob.CreateAsync Azure.Response{Azure.Storage.Blobs.Models.BlobContentInfo}. + + + + The Append Block operation commits a new block of data to the end of an existing append blob. The Append Block operation is permitted only if the blob was created with x-ms-blob-type set to AppendBlob. Append Block is supported only on version 2015-02-21 version or later. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Initial data + The length of the request. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specify the transactional md5 for the body, to be validated by the service. + Specify the transactional crc64 for the body, to be validated by the service. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Optional conditional header. The max length in bytes permitted for the append blob. If the Append Block operation would cause the blob to exceed that limit or if the blob size is already greater than the value specified in this header, the request will fail with MaxBlobSizeConditionNotMet error (HTTP status code 412 - Precondition Failed). + Optional conditional header, used only for the Append Block operation. A number indicating the byte offset to compare. Append Block will succeed only if the append position is equal to this number. If it is not, the request will fail with the AppendPositionConditionNotMet error (HTTP status code 412 - Precondition Failed). + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobAppendInfo} + + + + Create the AppendBlob.AppendBlockAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Initial data + The length of the request. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specify the transactional md5 for the body, to be validated by the service. + Specify the transactional crc64 for the body, to be validated by the service. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Optional conditional header. The max length in bytes permitted for the append blob. If the Append Block operation would cause the blob to exceed that limit or if the blob size is already greater than the value specified in this header, the request will fail with MaxBlobSizeConditionNotMet error (HTTP status code 412 - Precondition Failed). + Optional conditional header, used only for the Append Block operation. A number indicating the byte offset to compare. Append Block will succeed only if the append position is equal to this number. If it is not, the request will fail with the AppendPositionConditionNotMet error (HTTP status code 412 - Precondition Failed). + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + The AppendBlob.AppendBlockAsync Message. + + + + Create the AppendBlob.AppendBlockAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The AppendBlob.AppendBlockAsync Azure.Response{Azure.Storage.Blobs.Models.BlobAppendInfo}. + + + + The Append Block operation commits a new block of data to the end of an existing append blob where the contents are read from a source url. The Append Block operation is permitted only if the blob was created with x-ms-blob-type set to AppendBlob. Append Block is supported only on version 2015-02-21 version or later. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specify a URL to the copy source. + The length of the request. + Specifies the version of the operation to use for this request. + Bytes of source data in the specified range. + Specify the md5 calculated for the range of bytes that must be read from the copy source. + Specify the crc64 calculated for the range of bytes that must be read from the copy source. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specify the transactional md5 for the body, to be validated by the service. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Optional conditional header. The max length in bytes permitted for the append blob. If the Append Block operation would cause the blob to exceed that limit or if the blob size is already greater than the value specified in this header, the request will fail with MaxBlobSizeConditionNotMet error (HTTP status code 412 - Precondition Failed). + Optional conditional header, used only for the Append Block operation. A number indicating the byte offset to compare. Append Block will succeed only if the append position is equal to this number. If it is not, the request will fail with the AppendPositionConditionNotMet error (HTTP status code 412 - Precondition Failed). + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobAppendInfo} + + + + Create the AppendBlob.AppendBlockFromUriAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specify a URL to the copy source. + The length of the request. + Specifies the version of the operation to use for this request. + Bytes of source data in the specified range. + Specify the md5 calculated for the range of bytes that must be read from the copy source. + Specify the crc64 calculated for the range of bytes that must be read from the copy source. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specify the transactional md5 for the body, to be validated by the service. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Optional conditional header. The max length in bytes permitted for the append blob. If the Append Block operation would cause the blob to exceed that limit or if the blob size is already greater than the value specified in this header, the request will fail with MaxBlobSizeConditionNotMet error (HTTP status code 412 - Precondition Failed). + Optional conditional header, used only for the Append Block operation. A number indicating the byte offset to compare. Append Block will succeed only if the append position is equal to this number. If it is not, the request will fail with the AppendPositionConditionNotMet error (HTTP status code 412 - Precondition Failed). + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + 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. + The AppendBlob.AppendBlockFromUriAsync Message. + + + + Create the AppendBlob.AppendBlockFromUriAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The AppendBlob.AppendBlockFromUriAsync Azure.Response{Azure.Storage.Blobs.Models.BlobAppendInfo}. + + + + The Seal operation seals the Append Blob to make it read-only. Seal is supported only on version 2019-12-12 version or later. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Optional conditional header, used only for the Append Block operation. A number indicating the byte offset to compare. Append Block will succeed only if the append position is equal to this number. If it is not, the request will fail with the AppendPositionConditionNotMet error (HTTP status code 412 - Precondition Failed). + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.AppendBlobSealInternal} + + + + Create the AppendBlob.SealAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Optional conditional header, used only for the Append Block operation. A number indicating the byte offset to compare. Append Block will succeed only if the append position is equal to this number. If it is not, the request will fail with the AppendPositionConditionNotMet error (HTTP status code 412 - Precondition Failed). + The AppendBlob.SealAsync Message. + + + + Create the AppendBlob.SealAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The AppendBlob.SealAsync Azure.Response{Azure.Storage.Blobs.Models.AppendBlobSealInternal}. + + + + BlockBlob operations for Azure Blob Storage + + + + + The Upload Block Blob operation updates the content of an existing block blob. Updating an existing block blob overwrites any existing metadata on the blob. Partial updates are not supported with Put Blob; the content of the existing blob is overwritten with the content of the new blob. To perform a partial update of the content of a block blob, use the Put Block List operation. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Initial data + The length of the request. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specify the transactional md5 for the body, to be validated by the service. + Optional. Sets the blob's content type. If specified, this property is stored with the blob and returned with a read request. + Optional. Sets the blob's content encoding. If specified, this property is stored with the blob and returned with a read request. + Optional. Set the blob's content language. If specified, this property is stored with the blob and returned with a read request. + Optional. An MD5 hash of the blob content. Note that this hash is not validated, as the hashes for the individual blocks were validated when each was uploaded. + Optional. Sets the blob's cache control. If specified, this property is stored with the blob and returned with a read request. + Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Optional. Sets the blob's Content-Disposition header. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + Optional. Indicates the tier to be set on the blob. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Optional. A URL encoded query param string which specifies the tags to be created with the Blob object. e.g. TagName1=TagValue1&TagName2=TagValue2. The x-ms-tags header may contain up to 2kb of tags. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobContentInfo} + + + + Create the BlockBlob.UploadAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Initial data + The length of the request. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specify the transactional md5 for the body, to be validated by the service. + Optional. Sets the blob's content type. If specified, this property is stored with the blob and returned with a read request. + Optional. Sets the blob's content encoding. If specified, this property is stored with the blob and returned with a read request. + Optional. Set the blob's content language. If specified, this property is stored with the blob and returned with a read request. + Optional. An MD5 hash of the blob content. Note that this hash is not validated, as the hashes for the individual blocks were validated when each was uploaded. + Optional. Sets the blob's cache control. If specified, this property is stored with the blob and returned with a read request. + Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Optional. Sets the blob's Content-Disposition header. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + Optional. Indicates the tier to be set on the blob. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Optional. A URL encoded query param string which specifies the tags to be created with the Blob object. e.g. TagName1=TagValue1&TagName2=TagValue2. The x-ms-tags header may contain up to 2kb of tags. + The BlockBlob.UploadAsync Message. + + + + Create the BlockBlob.UploadAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The BlockBlob.UploadAsync Azure.Response{Azure.Storage.Blobs.Models.BlobContentInfo}. + + + + The Put Blob from URL operation creates a new Block Blob where the contents of the blob are read from a given URL. This API is supported beginning with the 2020-04-08 version. Partial updates are not supported with Put Blob from URL; the content of an existing blob is overwritten with the content of the new blob. To perform partial updates to a block blob’s contents using a source URL, use the Put Block from URL API in conjunction with Put Block List. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + The length of the request. + Specifies the version of the operation to use for this request. + Specifies the name of the source page blob snapshot. This value is a URL of up to 2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would appear in a request URI. The source blob must either be public or must be authenticated via a shared access signature. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specify the transactional md5 for the body, to be validated by the service. + Optional. Sets the blob's content type. If specified, this property is stored with the blob and returned with a read request. + Optional. Sets the blob's content encoding. If specified, this property is stored with the blob and returned with a read request. + Optional. Set the blob's content language. If specified, this property is stored with the blob and returned with a read request. + Optional. An MD5 hash of the blob content. Note that this hash is not validated, as the hashes for the individual blocks were validated when each was uploaded. + Optional. Sets the blob's cache control. If specified, this property is stored with the blob and returned with a read request. + Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Optional. Sets the blob's Content-Disposition header. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + Optional. Indicates the tier to be set on the blob. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Specify the md5 calculated for the range of bytes that must be read from the copy source. + Optional. A URL encoded query param string which specifies the tags to be created with the Blob object. e.g. TagName1=TagValue1&TagName2=TagValue2. The x-ms-tags header may contain up to 2kb of tags. + Optional, default is true. Indicates if properties from the source blob should be copied. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobContentInfo} + + + + Create the BlockBlob.PutBlobFromUrlAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + The length of the request. + Specifies the version of the operation to use for this request. + Specifies the name of the source page blob snapshot. This value is a URL of up to 2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would appear in a request URI. The source blob must either be public or must be authenticated via a shared access signature. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Specify the transactional md5 for the body, to be validated by the service. + Optional. Sets the blob's content type. If specified, this property is stored with the blob and returned with a read request. + Optional. Sets the blob's content encoding. If specified, this property is stored with the blob and returned with a read request. + Optional. Set the blob's content language. If specified, this property is stored with the blob and returned with a read request. + Optional. An MD5 hash of the blob content. Note that this hash is not validated, as the hashes for the individual blocks were validated when each was uploaded. + Optional. Sets the blob's cache control. If specified, this property is stored with the blob and returned with a read request. + Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Optional. Sets the blob's Content-Disposition header. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + Optional. Indicates the tier to be set on the blob. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Specify the md5 calculated for the range of bytes that must be read from the copy source. + Optional. A URL encoded query param string which specifies the tags to be created with the Blob object. e.g. TagName1=TagValue1&TagName2=TagValue2. The x-ms-tags header may contain up to 2kb of tags. + Optional, default is true. Indicates if properties from the source blob should be copied. + The BlockBlob.PutBlobFromUrlAsync Message. + + + + Create the BlockBlob.PutBlobFromUrlAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The BlockBlob.PutBlobFromUrlAsync Azure.Response{Azure.Storage.Blobs.Models.BlobContentInfo}. + + + + The Stage Block operation creates a new block to be committed as part of a blob + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + A valid Base64 string value that identifies the block. Prior to encoding, the string must be less than or equal to 64 bytes in size. For a given blob, the length of the value specified for the blockid parameter must be the same size for each block. + The length of the request. + Initial data + Specifies the version of the operation to use for this request. + Specify the transactional md5 for the body, to be validated by the service. + Specify the transactional crc64 for the body, to be validated by the service. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlockInfo} + + + + Create the BlockBlob.StageBlockAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + A valid Base64 string value that identifies the block. Prior to encoding, the string must be less than or equal to 64 bytes in size. For a given blob, the length of the value specified for the blockid parameter must be the same size for each block. + The length of the request. + Initial data + Specifies the version of the operation to use for this request. + Specify the transactional md5 for the body, to be validated by the service. + Specify the transactional crc64 for the body, to be validated by the service. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + 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. + The BlockBlob.StageBlockAsync Message. + + + + Create the BlockBlob.StageBlockAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The BlockBlob.StageBlockAsync Azure.Response{Azure.Storage.Blobs.Models.BlockInfo}. + + + + The Stage Block operation creates a new block to be committed as part of a blob where the contents are read from a URL. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + A valid Base64 string value that identifies the block. Prior to encoding, the string must be less than or equal to 64 bytes in size. For a given blob, the length of the value specified for the blockid parameter must be the same size for each block. + The length of the request. + Specify a URL to the copy source. + Specifies the version of the operation to use for this request. + Bytes of source data in the specified range. + Specify the md5 calculated for the range of bytes that must be read from the copy source. + Specify the crc64 calculated for the range of bytes that must be read from the copy source. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlockInfo} + + + + Create the BlockBlob.StageBlockFromUriAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + A valid Base64 string value that identifies the block. Prior to encoding, the string must be less than or equal to 64 bytes in size. For a given blob, the length of the value specified for the blockid parameter must be the same size for each block. + The length of the request. + Specify a URL to the copy source. + Specifies the version of the operation to use for this request. + Bytes of source data in the specified range. + Specify the md5 calculated for the range of bytes that must be read from the copy source. + Specify the crc64 calculated for the range of bytes that must be read from the copy source. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + 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. + The BlockBlob.StageBlockFromUriAsync Message. + + + + Create the BlockBlob.StageBlockFromUriAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The BlockBlob.StageBlockFromUriAsync Azure.Response{Azure.Storage.Blobs.Models.BlockInfo}. + + + + The Commit Block List operation writes a blob by specifying the list of block IDs that make up the blob. In order to be written as part of a blob, a block must have been successfully written to the server in a prior Put Block operation. You can call Put Block List to update a blob by uploading only those blocks that have changed, then committing the new and existing blocks together. You can do this by specifying whether to commit a block from the committed block list or from the uncommitted block list, or to commit the most recently uploaded version of the block, whichever list it may belong to. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + A list of block IDs split between the committed block list, in the uncommitted block list, or in the uncommitted block list first and then in the committed block list. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. Sets the blob's cache control. If specified, this property is stored with the blob and returned with a read request. + Optional. Sets the blob's content type. If specified, this property is stored with the blob and returned with a read request. + Optional. Sets the blob's content encoding. If specified, this property is stored with the blob and returned with a read request. + Optional. Set the blob's content language. If specified, this property is stored with the blob and returned with a read request. + Optional. An MD5 hash of the blob content. Note that this hash is not validated, as the hashes for the individual blocks were validated when each was uploaded. + Specify the transactional md5 for the body, to be validated by the service. + Specify the transactional crc64 for the body, to be validated by the service. + Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Optional. Sets the blob's Content-Disposition header. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + Optional. Indicates the tier to be set on the blob. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Optional. A URL encoded query param string which specifies the tags to be created with the Blob object. e.g. TagName1=TagValue1&TagName2=TagValue2. The x-ms-tags header may contain up to 2kb of tags. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.BlobContentInfo} + + + + Create the BlockBlob.CommitBlockListAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + A list of block IDs split between the committed block list, in the uncommitted block list, or in the uncommitted block list first and then in the committed block list. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. Sets the blob's cache control. If specified, this property is stored with the blob and returned with a read request. + Optional. Sets the blob's content type. If specified, this property is stored with the blob and returned with a read request. + Optional. Sets the blob's content encoding. If specified, this property is stored with the blob and returned with a read request. + Optional. Set the blob's content language. If specified, this property is stored with the blob and returned with a read request. + Optional. An MD5 hash of the blob content. Note that this hash is not validated, as the hashes for the individual blocks were validated when each was uploaded. + Specify the transactional md5 for the body, to be validated by the service. + Specify the transactional crc64 for the body, to be validated by the service. + Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file. Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. See Naming and Referencing Containers, Blobs, and Metadata for more information. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Optional. Sets the blob's Content-Disposition header. + 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. + The SHA-256 hash of the provided encryption key. Must be provided if the x-ms-encryption-key header is provided. + 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. + Optional. Version 2019-07-07 and later. Specifies the name of the encryption scope to use to encrypt the data provided in the request. If not specified, encryption is performed with the default account encryption scope. For more information, see Encryption at Rest for Azure Storage Services. + Optional. Indicates the tier to be set on the blob. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Optional. A URL encoded query param string which specifies the tags to be created with the Blob object. e.g. TagName1=TagValue1&TagName2=TagValue2. The x-ms-tags header may contain up to 2kb of tags. + The BlockBlob.CommitBlockListAsync Message. + + + + Create the BlockBlob.CommitBlockListAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The BlockBlob.CommitBlockListAsync Azure.Response{Azure.Storage.Blobs.Models.BlobContentInfo}. + + + + The Get Block List operation retrieves the list of blocks that have been uploaded as part of a block blob + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies whether to return the list of committed blocks, the list of uncommitted blocks, or both lists together. + Specifies the version of the operation to use for this request. + The snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to retrieve. For more information on working with blob snapshots, see Creating a Snapshot of a Blob. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.GetBlockListOperation} + + + + Create the BlockBlob.GetBlockListAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies whether to return the list of committed blocks, the list of uncommitted blocks, or both lists together. + Specifies the version of the operation to use for this request. + The snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to retrieve. For more information on working with blob snapshots, see Creating a Snapshot of a Blob. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify a SQL where clause on blob tags to operate only on blobs with a matching value. + 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. + The BlockBlob.GetBlockListAsync Message. + + + + Create the BlockBlob.GetBlockListAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The BlockBlob.GetBlockListAsync Azure.Response{Azure.Storage.Blobs.Models.GetBlockListOperation}. + + + + Directory operations for Azure Blob Storage + + + + + Create a 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: "*". + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. User-defined properties to be stored 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 base64 encoded. + 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. + Only valid if Hierarchical Namespace is enabled for the account. This umask restricts permission settings for file and directory, and will only be applied when default Acl does not exist in parent directory. If the umask bit has set, it means that the corresponding permission will be disabled. Otherwise the corresponding permission will be determined by the permission. A 4-digit octal notation (e.g. 0022) is supported here. If no umask was specified, a default umask - 0027 will be used. + Cache control for given resource + Content type for given resource + Content encoding for given resource + Content language for given resource + Content disposition for given resource + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.DirectoryCreateResult} + + + + Create the Directory.CreateAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. User-defined properties to be stored 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 base64 encoded. + 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. + Only valid if Hierarchical Namespace is enabled for the account. This umask restricts permission settings for file and directory, and will only be applied when default Acl does not exist in parent directory. If the umask bit has set, it means that the corresponding permission will be disabled. Otherwise the corresponding permission will be determined by the permission. A 4-digit octal notation (e.g. 0022) is supported here. If no umask was specified, a default umask - 0027 will be used. + Cache control for given resource + Content type for given resource + Content encoding for given resource + Content language for given resource + Content disposition for given resource + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + 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. + The Directory.CreateAsync Message. + + + + Create the Directory.CreateAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Directory.CreateAsync Azure.Response{Azure.Storage.Blobs.Models.DirectoryCreateResult}. + + + + Rename a 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: "*". + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + The file or directory to be renamed. The value must have the following format: "/{filesysystem}/{path}". If "x-ms-properties" is specified, the properties will overwrite the existing properties; otherwise, the existing properties will be preserved. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + Determines the behavior of the rename operation + Optional. User-defined properties to be stored 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 base64 encoded. + 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. + Only valid if Hierarchical Namespace is enabled for the account. This umask restricts permission settings for file and directory, and will only be applied when default Acl does not exist in parent directory. If the umask bit has set, it means that the corresponding permission will be disabled. Otherwise the corresponding permission will be determined by the permission. A 4-digit octal notation (e.g. 0022) is supported here. If no umask was specified, a default umask - 0027 will be used. + Cache control for given resource + Content type for given resource + Content encoding for given resource + Content language for given resource + Content disposition for given resource + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + A lease ID for the source path. If specified, the source path must have an active lease and the lease ID must match. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.DirectoryRenameResult} + + + + Create the Directory.RenameAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + The file or directory to be renamed. The value must have the following format: "/{filesysystem}/{path}". If "x-ms-properties" is specified, the properties will overwrite the existing properties; otherwise, the existing properties will be preserved. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + Determines the behavior of the rename operation + Optional. User-defined properties to be stored 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 base64 encoded. + 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. + Only valid if Hierarchical Namespace is enabled for the account. This umask restricts permission settings for file and directory, and will only be applied when default Acl does not exist in parent directory. If the umask bit has set, it means that the corresponding permission will be disabled. Otherwise the corresponding permission will be determined by the permission. A 4-digit octal notation (e.g. 0022) is supported here. If no umask was specified, a default umask - 0027 will be used. + Cache control for given resource + Content type for given resource + Content encoding for given resource + Content language for given resource + Content disposition for given resource + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + A lease ID for the source path. If specified, the source path must have an active lease and the lease ID must match. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + 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. + The Directory.RenameAsync Message. + + + + Create the Directory.RenameAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Directory.RenameAsync Azure.Response{Azure.Storage.Blobs.Models.DirectoryRenameResult}. + + + + Deletes the directory + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + If "true", all paths beneath the directory will be deleted. If "false" and the directory is non-empty, an error occurs. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.DirectoryDeleteResult} + + + + Create the Directory.DeleteAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + If "true", all paths beneath the directory will be deleted. If "false" and the directory is non-empty, an error occurs. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + 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. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + 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. + The Directory.DeleteAsync Message. + + + + Create the Directory.DeleteAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Directory.DeleteAsync Azure.Response{Azure.Storage.Blobs.Models.DirectoryDeleteResult}. + + + + Set the owner, group, permissions, or access control list for a directory. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Optional. The owner of the blob or directory. + Optional. The owning group of the blob or directory. + 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. + 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]". + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.DirectorySetAccessControlResult} + + + + Create the Directory.SetAccessControlAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Optional. The owner of the blob or directory. + Optional. The owning group of the blob or directory. + 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. + 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]". + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + 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. + The Directory.SetAccessControlAsync Message. + + + + Create the Directory.SetAccessControlAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Directory.SetAccessControlAsync Azure.Response{Azure.Storage.Blobs.Models.DirectorySetAccessControlResult}. + + + + Get the owner, group, permissions, or access control list for a directory. + + The ClientDiagnostics instance used for operation reporting. + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. Valid only when Hierarchical Namespace is enabled for the account. If "true", the 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. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + 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. + Whether to invoke the operation asynchronously. The default value is true. + Operation name. + Cancellation token. + Azure.Response{Azure.Storage.Blobs.Models.DirectoryGetAccessControlResult} + + + + Create the Directory.GetAccessControlAsync request. + + The pipeline used for sending requests. + The URL of the service account, container, or blob that is the targe of the desired operation. + Specifies the version of the operation to use for this request. + The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations. + Optional. Valid only when Hierarchical Namespace is enabled for the account. If "true", the 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. + If specified, the operation only succeeds if the resource's lease is active and matches this ID. + Specify an ETag value to operate only on blobs with a matching value. + Specify an ETag value to operate only on blobs without a matching value. + Specify this header value to operate only on a blob if it has been modified since the specified date/time. + Specify this header value to operate only on a blob if it has not been modified since the specified date/time. + 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. + The Directory.GetAccessControlAsync Message. + + + + Create the Directory.GetAccessControlAsync response or throw a failure exception. + + The ClientDiagnostics instance to use. + The raw Response. + The Directory.GetAccessControlAsync Azure.Response{Azure.Storage.Blobs.Models.DirectoryGetAccessControlResult}. + + + + Indicates the tier to be set on the blob. + + + + + Initializes a new instance of the structure. + + The string value of the instance. + + + + P4 + + + + + P6 + + + + + P10 + + + + + P15 + + + + + P20 + + + + + P30 + + + + + P40 + + + + + P50 + + + + + P60 + + + + + P70 + + + + + P80 + + + + + Hot + + + + + Cool + + + + + Archive + + + + + Determines if two values are the same. + + The first to compare. + The second to compare. + True if and are the same; otherwise, false. + + + + Determines if two values are different. + + The first to compare. + The second to compare. + True if and are different; otherwise, false. + + + + Converts a string to a . + + The string value to convert. + The AccessTier value. + + + + Check if two instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + Check if two instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + Get a hash code for the . + + Hash code for the AccessTier. + + + + Convert the to a string. + + String representation of the AccessTier. + + + + AccountInfo + + + + + Identifies the sku name of the account + + + + + Identifies the account kind + + + + + Version 2019-07-07 and newer. Indicates if the account has a hierarchical namespace enabled. + + + + + Prevent direct instantiation of AccountInfo instances. + You can use BlobsModelFactory.AccountInfo instead. + + + + + BlobsModelFactory provides utilities for mocking. + + + BlobsModelFactory provides utilities for mocking. + + + BlobsModelFactory provides utilities for mocking. + + + BlobsModelFactory provides utilities for mocking. + + + BlobsModelFactory provides utilities for mocking. + + + BlobsModelFactory provides utilities for mocking. + + + BlobsModelFactory provides utilities for mocking. + + + BlobsModelFactory provides utilities for mocking. + + + BlobsModelFactory provides utilities for mocking. + + + BlobsModelFactory provides utilities for mocking. + + + BlobsModelFactory provides utilities for mocking. + + + BlobsModelFactory provides utilities for mocking. + + + BlobsModelFactory provides utilities for mocking. + + + BlobsModelFactory provides utilities for mocking. + + + BlobsModelFactory provides utilities for mocking. + + + BlobsModelFactory provides utilities for mocking. + + + BlobsModelFactory provides utilities for mocking. + + + BlobsModelFactory provides utilities for mocking. + + + BlobsModelFactory provides utilities for mocking. + + + BlobsModelFactory provides utilities for mocking. + + + BlobsModelFactory provides utilities for mocking. + + + BlobsModelFactory provides utilities for mocking. + + + This class holds BlobModelFactory overloads we need for backwards compatibility. + + + BlobsModelFactory provides utilities for mocking. + + + + + Creates a new AccountInfo instance for mocking. + + + + + Creates a new BlobAppendInfo instance for mocking. + + + + + Creates a new BlobBlock instance for mocking. + + + + + Creates a new BlobContainerAccessPolicy instance for mocking. + + + + + Creates a new BlobContainerInfo instance for mocking. + + + + + Creates a new BlobContainerItem instance for mocking. + + + + + Creates a new BlobContainerProperties instance for mocking. + + + + + Creates a new BlobContentInfo instance for mocking. + + + + + Creates a new BlobCopyInfo instance for mocking. + + + + + Creates a new BlobGeoReplication instance for mocking. + + + + + Creates a new BlobInfo instance for mocking. + + + + + Creates a new BlobItemProperties instance for mocking. + + + + + Creates a new BlobLease instance for mocking. + + + + + Creates a new BlobServiceStatistics instance for mocking. + + + + + Creates a new BlobSnapshotInfo instance for mocking. + + + + + Creates a new BlockInfo instance for mocking. + + + + + Creates a new BlockList instance for mocking. + + + + + Creates a new PageBlobInfo instance for mocking. + + + + + Creates a new PageInfo instance for mocking. + + + + + Creates a new UserDelegationKey instance for mocking. + + + + + Creates a new BlobHierarchyItem instance for mocking. + + + + + Creates a new BlobDownloadInfo instance for mocking. + + + + + Creates a new BlobDownloadInfo instance for mocking. + + + + + Creates a new BlobDownloadInfo instance for mocking. + + + + + Creates a new BlobDownloadInfo instance for mocking. + + + + + Creates a new BlobAppendInfo instance for mocking. + + + + + Creates a new BlobContentInfo instance for mocking. + + + + + Creates a new BlobContentInfo instance for mocking. + + + + + Creates a new BlobProperties instance for mocking. + + + + + Creates a new BlobItemProperties instance for mocking. + + + + + Creates a new BlobItemProperties instance for mocking. + + + + + Creates a new BlobItemProperties instance for mocking. + + + + + Creates a new BlobProperties instance for mocking. + + + + + Creates a new BlobProperties instance for mocking. + + + + + Creates a new BlobProperties instance for mocking. + + + + + Creates a new BlockInfo instance for mocking. + + + + + Creates a new PageInfo instance for mocking. + + + + + Creates a new BlobContainerProperties instance for mocking. + + + + + Creates a new BlobCopyInfo instance for mocking. + + + + + Creates a new BlobItem instance for mocking. + + + + + Creates a new BlobItem instance for mocking. + + + + + Creates a new BlobSnapshotInfo instance for mocking. + + + + + Creates a new BlobInfo instance for mocking. + + + + + Creates a new BlobContainerItem instance for mocking. + + + + + Creates a new BlobContainerProperties instance for mocking. + + + + + Creates a new BlobQueryError instance for mocking. + + + + + Creates a new GetBlobTagResult instance for mocking. + + + + + Creates a new BlobTagItem instance for mocking. + + + + + Creates a new BlobTagItem instance for mocking. + + + + + Creates a new ObjectReplicationPolicy instance for mocking. + + + + + Creates a new ObjectReplicationRule instance for mocking. + + + + + Creates a new BlobDownloadDetails instance for mocking. + + + + + Creates a new BlobContainerProperties instance for mocking. + + + + + Creates a new AccountInfo instance for mocking. + + + + + Creates a new PageRangesInfo instance for mocking. + + + + + Identifies the account kind + + + + + Storage + + + + + BlobStorage + + + + + StorageV2 + + + + + FileStorage + + + + + BlockBlobStorage + + + + + AppendBlobSealInternal + + + + + 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. + + + + + 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. + + + + + If this blob has been sealed + + + + + Prevent direct instantiation of AppendBlobSealInternal instances. + You can use BlobsModelFactory.AppendBlobSealInternal instead. + + + + + ArchiveStatus values + + + + + rehydrate-pending-to-hot + + + + + rehydrate-pending-to-cool + + + + + field of an arrow schema + + + + + Type + + + + + Name + + + + + Precision + + + + + Scale + + + + + Creates a new ArrowFieldInternal instance + + + + + Serialize a ArrowFieldInternal instance as XML. + + The ArrowFieldInternal instance to serialize. + An optional name to use for the root element instead of "Field". + An optional namespace to use for the root element instead of "". + The serialized XML element. + + + + arrow configuration + + + + + Schema + + + + + Creates a new ArrowTextConfigurationInternal instance + + + + + Serialize a ArrowTextConfigurationInternal instance as XML. + + The ArrowTextConfigurationInternal instance to serialize. + An optional name to use for the root element instead of "ArrowConfiguration". + An optional namespace to use for the root element instead of "". + The serialized XML element. + + + + Blob GetAccessControlResult + + + + + An HTTP entity tag associated with the file or directory. + + + + + The data and time the file or directory was last modified. Write operations on the file or directory update the last modified time. + + + + + The owner of the file or directory. Included in the response if Hierarchical Namespace is enabled for the account. + + + + + The owning group of the file or directory. Included in the response if Hierarchical Namespace is enabled for the account. + + + + + 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. + + + + + 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. + + + + + Prevent direct instantiation of BlobGetAccessControlResult instances. + You can use BlobsModelFactory.BlobGetAccessControlResult instead. + + + + + Blob QueryResult + + + + + 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-meta + + + + + The number of bytes present in the response body. + + + + + The media type of the body of the response. For Download Blob this is 'application/octet-stream' + + + + + Indicates the range of bytes returned in the event that the client requested a subset of the blob by setting the 'Range' request header. + + + + + 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. + + + + + 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. + + + + + This header returns the value that was specified for the Content-Encoding request header + + + + + This header is returned if it was previously specified for the blob. + + + + + This header returns the value that was specified for the 'x-ms-blob-content-disposition' header. The Content-Disposition response header field conveys additional information about how to process the response payload, and also can be used to attach additional metadata. For example, if set to attachment, it indicates that the user-agent should not display the response, but instead show a Save As dialog with a filename other than the blob name specified. + + + + + This header returns the value that was specified for the Content-Language request header. + + + + + The current sequence number for a page blob. This header is not returned for block blobs or append blobs + + + + + The blob's type. + + + + + If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to true, then the request returns a crc64 for the range, as long as the range size is less than or equal to 4 MB. If both x-ms-range-get-content-crc64 and x-ms-range-get-content-md5 is specified in the same request, it will fail with 400(Bad Request) + + + + + Conclusion time of the last attempted Copy Blob operation where this blob was the destination blob. This value can specify the time of a completed, aborted, or failed copy attempt. This header does not appear if a copy is pending, if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List. + + + + + Only appears when x-ms-copy-status is failed or pending. Describes the cause of the last fatal or non-fatal copy operation failure. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List + + + + + String identifier for this copy operation. Use with Get Blob Properties to check the status of this copy operation, or pass to Abort Copy Blob to abort a pending copy. + + + + + Contains the number of bytes copied and the total bytes in the source in the last attempted Copy Blob operation where this blob was the destination blob. Can show between 0 and Content-Length bytes copied. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List + + + + + URL up to 2 KB in length that specifies the source blob or file used in the last attempted Copy Blob operation where this blob was the destination blob. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List. + + + + + State of the copy operation identified by x-ms-copy-id. + + + + + When a blob is leased, specifies whether the lease is of infinite or fixed duration. + + + + + Lease state of the blob. + + + + + The current lease status of the blob. + + + + + Indicates that the service supports requests for partial blob content. + + + + + The number of committed blocks present in the blob. This header is returned only for append blobs. + + + + + The value of this header is set to true if the blob data and application metadata are completely encrypted using the specified algorithm. Otherwise, the value is set to false (when the blob is unencrypted, or if only parts of the blob/application metadata are encrypted). + + + + + 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. + + + + + Returns the name of the encryption scope used to encrypt the blob contents and application metadata. Note that the absence of this header implies use of the default account encryption scope. + + + + + If the blob 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 whole blob'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 + + + + + Body + + + + + Creates a new BlobQueryResult instance + + + + + Blob RenameResult + + + + + An HTTP entity tag associated with the file or directory. + + + + + The data and time the file or directory was last modified. Write operations on the file or directory update the last modified time. + + + + + The size of the resource in bytes. + + + + + Prevent direct instantiation of BlobRenameResult instances. + You can use BlobsModelFactory.BlobRenameResult instead. + + + + + Blob SetAccessControlResult + + + + + An HTTP entity tag associated with the file or directory. + + + + + The data and time the file or directory was last modified. Write operations on the file or directory update the last modified time. + + + + + Prevent direct instantiation of BlobSetAccessControlResult instances. + You can use BlobsModelFactory.BlobSetAccessControlResult instead. + + + + + An Access policy + + + An Access policy for Blob Containers + + + + + the date-time the policy is active + + + + + the date-time the policy expires + + + + + the permissions for the acl policy + + + + + Creates a new BlobAccessPolicy instance + + + + + Serialize a BlobAccessPolicy instance as XML. + + The BlobAccessPolicy instance to serialize. + An optional name to use for the root element instead of "AccessPolicy". + An optional namespace to use for the root element instead of "". + The serialized XML element. + + + + Deserializes XML into a new BlobAccessPolicy instance. + + The XML element to deserialize. + A deserialized BlobAccessPolicy instance. + + + + The date-time the policy is active. + This value is non-nullable, please use . + + + + + The date-time the policy expires. + This value is non-nullable, please use . + + + + + Azure Analytics Logging settings. + + + + + The version of Storage Analytics to configure. + + + + + Indicates whether all delete requests should be logged. + + + + + Indicates whether all read requests should be logged. + + + + + Indicates whether all write requests should be logged. + + + + + the retention policy which determines how long the associated data should persist + + + + + Creates a new BlobAnalyticsLogging instance + + + + + Creates a new BlobAnalyticsLogging instance + + Whether to skip initializing nested objects. + + + + Serialize a BlobAnalyticsLogging instance as XML. + + The BlobAnalyticsLogging instance to serialize. + An optional name to use for the root element instead of "Logging". + An optional namespace to use for the root element instead of "". + The serialized XML element. + + + + Deserializes XML into a new BlobAnalyticsLogging instance. + + The XML element to deserialize. + A deserialized BlobAnalyticsLogging instance. + + + + BlobAppendInfo + + + + + 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. + + + + + 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. + + + + + 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. + + + + + 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. + + + + + This response header is returned only for append operations. It returns the offset at which the block was committed, in bytes. + + + + + The number of committed blocks present in the blob. This header is returned only for append blobs. + + + + + 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. + + + + + The SHA-256 hash of the encryption key used to encrypt the block. This header is only returned when the block was encrypted with a customer-provided key. + + + + + Returns the name of the encryption scope used to encrypt the blob contents and application metadata. Note that the absence of this header implies use of the default account encryption scope. + + + + + Prevent direct instantiation of BlobAppendInfo instances. + You can use BlobsModelFactory.BlobAppendInfo instead. + + + + + BlobBatchResult + + + + + The media type of the body of the response. For batch requests, this is multipart/mixed; boundary=batchresponse_GUID + + + + + Content + + + + + Prevent direct instantiation of BlobBatchResult instances. + You can use BlobsModelFactory.BlobBatchResult instead. + + + + + Represents a single block in a block blob. It describes the block's ID and size. + + + + + The base64 encoded block ID. + + + + + The block size in bytes. + + + + + Prevent direct instantiation of BlobBlock instances. + You can use BlobsModelFactory.BlobBlock instead. + + + + + Check if two BlobBlock instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + Check if two BlobBlock instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + Get a hash code for the BlobBlock. + + + + + Deserializes XML into a new BlobBlock instance. + + The XML element to deserialize. + A deserialized BlobBlock instance. + + + + BlobContainerAccessPolicy + + + + + Indicated whether data in the container may be accessed publicly and the level of access + + + + + 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. + + + + + 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. + + + + + a collection of signed identifiers + + + + + Creates a new BlobContainerAccessPolicy instance + + + + + BlobContainerInfo + + + + + 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. + + + + + 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. + + + + + Prevent direct instantiation of BlobContainerInfo instances. + You can use BlobsModelFactory.BlobContainerInfo instead. + + + + + An Azure Storage container + + + + + Name + + + + + Deleted + + + + + Version + + + + + Properties of a container + + + + + Creates a new BlobContainerItem instance + + + + + Creates a new BlobContainerItem instance + + Whether to skip initializing nested objects. + + + + Deserializes XML into a new BlobContainerItem instance. + + The XML element to deserialize. + A deserialized BlobContainerItem instance. + + + + Properties of a container + + + + + Last-Modified + + + + + LeaseStatus + + + + + LeaseState + + + + + LeaseDuration + + + + + PublicAccess + + + + + HasImmutabilityPolicy + + + + + HasLegalHold + + + + + DefaultEncryptionScope + + + + + DenyEncryptionScopeOverride + + + + + DeletedTime + + + + + RemainingRetentionDays + + + + + ETag + + + + + Metadata + + + + + Creates a new BlobContainerProperties instance + + + + + Creates a new BlobContainerProperties instance + + Whether to skip initializing nested objects. + + + + Deserializes XML into a new BlobContainerProperties instance. + + The XML element to deserialize. + A deserialized BlobContainerProperties instance. + + + + An enumeration of containers + + + + + ServiceEndpoint + + + + + Prefix + + + + + Marker + + + + + MaxResults + + + + + NextMarker + + + + + BlobContainerItems + + + + + Creates a new BlobContainersSegment instance + + + + + Creates a new BlobContainersSegment instance + + Whether to skip initializing nested objects. + + + + Deserializes XML into a new BlobContainersSegment instance. + + The XML element to deserialize. + A deserialized BlobContainersSegment instance. + + + + BlobContentInfo + + + + + 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. + + + + + 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. + + + + + 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. + + + + + A DateTime value returned by the service that uniquely identifies the blob. The value of this header indicates the blob version, and may be used in subsequent requests to access this version of the blob. + + + + + 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. + + + + + Returns the name of the encryption scope used to encrypt the blob contents and application metadata. Note that the absence of this header implies use of the default account encryption scope. + + + + + The current sequence number for the page blob. This is only returned for page blobs. + + + + + Prevent direct instantiation of BlobContentInfo instances. + You can use BlobsModelFactory.BlobContentInfo instead. + + + + + BlobCopyInfo + + + + + 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. + + + + + 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. + + + + + A DateTime value returned by the service that uniquely identifies the blob. The value of this header indicates the blob version, and may be used in subsequent requests to access this version of the blob. + + + + + String identifier for this copy operation. Use with Get Blob Properties to check the status of this copy operation, or pass to Abort Copy Blob to abort a pending copy. + + + + + State of the copy operation identified by x-ms-copy-id. + + + + + Prevent direct instantiation of BlobCopyInfo instances. + You can use BlobsModelFactory.BlobCopyInfo instead. + + + + + CORS is an HTTP feature that enables a web application running under one domain to access resources in another domain. Web browsers implement a security restriction known as same-origin policy that prevents a web page from calling APIs in a different domain; CORS provides a secure way to allow one domain (the origin domain) to call APIs in another domain + + + + + The origin domains that are permitted to make a request against the storage service via CORS. The origin domain is the domain from which the request originates. Note that the origin must be an exact case-sensitive match with the origin that the user age sends to the service. You can also use the wildcard character '*' to allow all origin domains to make requests via CORS. + + + + + The methods (HTTP request verbs) that the origin domain may use for a CORS request. (comma separated) + + + + + the request headers that the origin domain may specify on the CORS request. + + + + + The response headers that may be sent in the response to the CORS request and exposed by the browser to the request issuer + + + + + The maximum amount time that a browser should cache the preflight OPTIONS request. + + + + + Creates a new BlobCorsRule instance + + + + + Serialize a BlobCorsRule instance as XML. + + The BlobCorsRule instance to serialize. + An optional name to use for the root element instead of "CorsRule". + An optional namespace to use for the root element instead of "". + The serialized XML element. + + + + Deserializes XML into a new BlobCorsRule instance. + + The XML element to deserialize. + A deserialized BlobCorsRule instance. + + + + Optional. Only possible value is 'permanent', which specifies to permanently delete a blob if blob soft delete is enabled. + + + + + Permanent + + + + + Error codes returned by the service + + + + + Initializes a new instance of the structure. + + The string value of the instance. + + + + AccountAlreadyExists + + + + + AccountBeingCreated + + + + + AccountIsDisabled + + + + + AuthenticationFailed + + + + + AuthorizationFailure + + + + + ConditionHeadersNotSupported + + + + + ConditionNotMet + + + + + EmptyMetadataKey + + + + + InsufficientAccountPermissions + + + + + InternalError + + + + + InvalidAuthenticationInfo + + + + + InvalidHeaderValue + + + + + InvalidHttpVerb + + + + + InvalidInput + + + + + InvalidMd5 + + + + + InvalidMetadata + + + + + InvalidQueryParameterValue + + + + + InvalidRange + + + + + InvalidResourceName + + + + + InvalidUri + + + + + InvalidXmlDocument + + + + + InvalidXmlNodeValue + + + + + Md5Mismatch + + + + + MetadataTooLarge + + + + + MissingContentLengthHeader + + + + + MissingRequiredQueryParameter + + + + + MissingRequiredHeader + + + + + MissingRequiredXmlNode + + + + + MultipleConditionHeadersNotSupported + + + + + OperationTimedOut + + + + + OutOfRangeInput + + + + + OutOfRangeQueryParameterValue + + + + + RequestBodyTooLarge + + + + + ResourceTypeMismatch + + + + + RequestUrlFailedToParse + + + + + ResourceAlreadyExists + + + + + ResourceNotFound + + + + + ServerBusy + + + + + UnsupportedHeader + + + + + UnsupportedXmlNode + + + + + UnsupportedQueryParameter + + + + + UnsupportedHttpVerb + + + + + AppendPositionConditionNotMet + + + + + BlobAlreadyExists + + + + + BlobImmutableDueToPolicy + + + + + BlobNotFound + + + + + BlobOverwritten + + + + + BlobTierInadequateForContentLength + + + + + BlockCountExceedsLimit + + + + + BlockListTooLong + + + + + CannotChangeToLowerTier + + + + + CannotVerifyCopySource + + + + + ContainerAlreadyExists + + + + + ContainerBeingDeleted + + + + + ContainerDisabled + + + + + ContainerNotFound + + + + + ContentLengthLargerThanTierLimit + + + + + CopyAcrossAccountsNotSupported + + + + + CopyIdMismatch + + + + + FeatureVersionMismatch + + + + + IncrementalCopyBlobMismatch + + + + + IncrementalCopyOfEralierVersionSnapshotNotAllowed + + + + + IncrementalCopySourceMustBeSnapshot + + + + + InfiniteLeaseDurationRequired + + + + + InvalidBlobOrBlock + + + + + InvalidBlobTier + + + + + InvalidBlobType + + + + + InvalidBlockId + + + + + InvalidBlockList + + + + + InvalidOperation + + + + + InvalidPageRange + + + + + InvalidSourceBlobType + + + + + InvalidSourceBlobUrl + + + + + InvalidVersionForPageBlobOperation + + + + + LeaseAlreadyPresent + + + + + LeaseAlreadyBroken + + + + + LeaseIdMismatchWithBlobOperation + + + + + LeaseIdMismatchWithContainerOperation + + + + + LeaseIdMismatchWithLeaseOperation + + + + + LeaseIdMissing + + + + + LeaseIsBreakingAndCannotBeAcquired + + + + + LeaseIsBreakingAndCannotBeChanged + + + + + LeaseIsBrokenAndCannotBeRenewed + + + + + LeaseLost + + + + + LeaseNotPresentWithBlobOperation + + + + + LeaseNotPresentWithContainerOperation + + + + + LeaseNotPresentWithLeaseOperation + + + + + MaxBlobSizeConditionNotMet + + + + + NoAuthenticationInformation + + + + + NoPendingCopyOperation + + + + + OperationNotAllowedOnIncrementalCopyBlob + + + + + PendingCopyOperation + + + + + PreviousSnapshotCannotBeNewer + + + + + PreviousSnapshotNotFound + + + + + PreviousSnapshotOperationNotSupported + + + + + SequenceNumberConditionNotMet + + + + + SequenceNumberIncrementTooLarge + + + + + SnapshotCountExceeded + + + + + SnaphotOperationRateExceeded + + + + + SnapshotsPresent + + + + + SourceConditionNotMet + + + + + SystemInUse + + + + + TargetConditionNotMet + + + + + UnauthorizedBlobOverwrite + + + + + BlobBeingRehydrated + + + + + BlobArchived + + + + + BlobNotArchived + + + + + AuthorizationSourceIPMismatch + + + + + AuthorizationProtocolMismatch + + + + + AuthorizationPermissionMismatch + + + + + AuthorizationServiceMismatch + + + + + AuthorizationResourceTypeMismatch + + + + + Determines if two values are the same. + + The first to compare. + The second to compare. + True if and are the same; otherwise, false. + + + + Determines if two values are different. + + The first to compare. + The second to compare. + True if and are different; otherwise, false. + + + + Converts a string to a . + + The string value to convert. + The BlobErrorCode value. + + + + Check if two instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + Check if two instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + Get a hash code for the . + + Hash code for the BlobErrorCode. + + + + Convert the to a string. + + String representation of the BlobErrorCode. + + + + Required. Indicates mode of the expiry time + + + + + Initializes a new instance of the structure. + + The string value of the instance. + + + + NeverExpire + + + + + RelativeToCreation + + + + + RelativeToNow + + + + + Absolute + + + + + Determines if two values are the same. + + The first to compare. + The second to compare. + True if and are the same; otherwise, false. + + + + Determines if two values are different. + + The first to compare. + The second to compare. + True if and are different; otherwise, false. + + + + Converts a string to a . + + The string value to convert. + The BlobExpiryOptions value. + + + + Check if two instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + Check if two instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + Get a hash code for the . + + Hash code for the BlobExpiryOptions. + + + + Convert the to a string. + + String representation of the BlobExpiryOptions. + + + + Geo-Replication information for the Secondary Storage Service + + + + + The status of the secondary location + + + + + A GMT date/time value, to the second. All primary writes preceding this value are guaranteed to be available for read operations at the secondary. Primary writes after this point in time may or may not be available for reads. + + + + + Prevent direct instantiation of BlobGeoReplication instances. + You can use BlobsModelFactory.BlobGeoReplication instead. + + + + + Deserializes XML into a new BlobGeoReplication instance. + + The XML element to deserialize. + A deserialized BlobGeoReplication instance. + + + + The status of the secondary location + + + + + live + + + + + bootstrap + + + + + unavailable + + + + + BlobInfo + + + BlobInfo + + + + + 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. + + + + + Returns the date and time the blob 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. + + + + + Prevent direct instantiation of BlobInfo instances. + You can use BlobsModelFactory.BlobInfo instead. + + + + + The current sequence number for a page blob. This header is not + returned for block blobs or append blobs. + + + + + The versionId of the blob version that was created. + If null, a new blob version was not created. + + + + + An Azure Storage blob + + + + + Name + + + + + Deleted + + + + + Snapshot + + + + + VersionId + + + + + IsCurrentVersion + + + + + Properties of a blob + + + + + Metadata + + + + + Blob tags + + + + + ObjectReplicationMetadata + + + + + Creates a new BlobItemInternal instance + + + + + Creates a new BlobItemInternal instance + + Whether to skip initializing nested objects. + + + + Deserializes XML into a new BlobItemInternal instance. + + The XML element to deserialize. + A deserialized BlobItemInternal instance. + + + + Properties of a blob + + + + + Last-Modified + + + + + Size in bytes + + + + + Content-Type + + + + + Content-Encoding + + + + + Content-Language + + + + + Content-MD5 + + + + + Content-Disposition + + + + + Cache-Control + + + + + x-ms-blob-sequence-number + + + + + BlobType + + + + + LeaseStatus + + + + + LeaseState + + + + + LeaseDuration + + + + + CopyId + + + + + CopyStatus + + + + + CopySource + + + + + CopyProgress + + + + + CopyStatusDescription + + + + + ServerEncrypted + + + + + IncrementalCopy + + + + + DestinationSnapshot + + + + + RemainingRetentionDays + + + + + AccessTier + + + + + AccessTierInferred + + + + + ArchiveStatus + + + + + CustomerProvidedKeySha256 + + + + + The name of the encryption scope under which the blob is encrypted. + + + + + TagCount + + + + + Expiry-Time + + + + + Sealed + + + + + If an object is in rehydrate pending state then this header is returned with priority of rehydrate. Valid values are High and Standard. + + + + + LastAccessTime + + + + + ETag + + + + + CreatedOn + + + + + CopyCompletedOn + + + + + DeletedOn + + + + + AccessTierChangedOn + + + + + Prevent direct instantiation of BlobItemProperties instances. + You can use BlobsModelFactory.BlobItemProperties instead. + + + + + Deserializes XML into a new BlobItemProperties instance. + + The XML element to deserialize. + A deserialized BlobItemProperties instance. + + + + BlobLease + + + Lease + + + + + 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. + + + + + 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. + + + + + Uniquely identifies a container's or blob's lease + + + + + Prevent direct instantiation of BlobLease instances. + You can use BlobsModelFactory.BlobLease instead. + + + + + Gets the approximate time remaining in the lease period, in + seconds. This is only provided when breaking a lease. + + + + + a summary of request statistics grouped by API in hour or minute aggregates for blobs + + + + + The version of Storage Analytics to configure. + + + + + Indicates whether metrics are enabled for the Blob service. + + + + + the retention policy which determines how long the associated data should persist + + + + + Indicates whether metrics should generate summary statistics for called API operations. + + + + + Creates a new BlobMetrics instance + + + + + Creates a new BlobMetrics instance + + Whether to skip initializing nested objects. + + + + Serialize a BlobMetrics instance as XML. + + The BlobMetrics instance to serialize. + An optional name to use for the root element instead of "Metrics". + An optional namespace to use for the root element instead of "". + The serialized XML element. + + + + Deserializes XML into a new BlobMetrics instance. + + The XML element to deserialize. + A deserialized BlobMetrics instance. + + + + BlobPrefix + + + + + Name + + + + + Prevent direct instantiation of BlobPrefix instances. + You can use BlobsModelFactory.BlobPrefix instead. + + + + + Deserializes XML into a new BlobPrefix instance. + + The XML element to deserialize. + A deserialized BlobPrefix instance. + + + + BlobPropertiesInternal + + + + + Returns the date and time the blob 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. + + + + + Returns the date and time the blob was created. + + + + + x-ms-meta + + + + + Optional. Only valid when Object Replication is enabled for the storage container and on the destination blob of the replication. + + + + + Optional. Only valid when Object Replication is enabled for the storage container and on the source blob of the replication. When retrieving this header, it will return the header with the policy id and rule id (e.g. x-ms-or-policyid_ruleid), and the value will be the status of the replication (e.g. complete, failed). + + + + + The blob's type. + + + + + Conclusion time of the last attempted Copy Blob operation where this blob was the destination blob. This value can specify the time of a completed, aborted, or failed copy attempt. This header does not appear if a copy is pending, if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List. + + + + + Only appears when x-ms-copy-status is failed or pending. Describes the cause of the last fatal or non-fatal copy operation failure. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List + + + + + String identifier for this copy operation. Use with Get Blob Properties to check the status of this copy operation, or pass to Abort Copy Blob to abort a pending copy. + + + + + Contains the number of bytes copied and the total bytes in the source in the last attempted Copy Blob operation where this blob was the destination blob. Can show between 0 and Content-Length bytes copied. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List + + + + + URL up to 2 KB in length that specifies the source blob or file used in the last attempted Copy Blob operation where this blob was the destination blob. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List. + + + + + State of the copy operation identified by x-ms-copy-id. + + + + + Included if the blob is incremental copy blob. + + + + + Included if the blob is incremental copy blob or incremental copy snapshot, if x-ms-copy-status is success. Snapshot time of the last successful incremental copy snapshot for this blob. + + + + + When a blob is leased, specifies whether the lease is of infinite or fixed duration. + + + + + Lease state of the blob. + + + + + The current lease status of the blob. + + + + + The number of bytes present in the response body. + + + + + The content type specified for the blob. The default content type is 'application/octet-stream' + + + + + 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. + + + + + 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. + + + + + This header returns the value that was specified for the Content-Encoding request header + + + + + This header returns the value that was specified for the 'x-ms-blob-content-disposition' header. The Content-Disposition response header field conveys additional information about how to process the response payload, and also can be used to attach additional metadata. For example, if set to attachment, it indicates that the user-agent should not display the response, but instead show a Save As dialog with a filename other than the blob name specified. + + + + + This header returns the value that was specified for the Content-Language request header. + + + + + This header is returned if it was previously specified for the blob. + + + + + The current sequence number for a page blob. This header is not returned for block blobs or append blobs + + + + + Indicates that the service supports requests for partial blob content. + + + + + The number of committed blocks present in the blob. This header is returned only for append blobs. + + + + + The value of this header is set to true if the blob data and application metadata are completely encrypted using the specified algorithm. Otherwise, the value is set to false (when the blob is unencrypted, or if only parts of the blob/application metadata are encrypted). + + + + + The SHA-256 hash of the encryption key used to encrypt the metadata. This header is only returned when the metadata was encrypted with a customer-provided key. + + + + + Returns the name of the encryption scope used to encrypt the blob contents and application metadata. Note that the absence of this header implies use of the default account encryption scope. + + + + + The tier of page blob on a premium storage account or tier of block blob on blob storage LRS accounts. For a list of allowed premium page blob tiers, see https://docs.microsoft.com/en-us/azure/virtual-machines/windows/premium-storage#features. For blob storage LRS accounts, valid values are Hot/Cool/Archive. + + + + + For page blobs on a premium storage account only. If the access tier is not explicitly set on the blob, the tier is inferred based on its content length and this header will be returned with true value. + + + + + For blob storage LRS accounts, valid values are rehydrate-pending-to-hot/rehydrate-pending-to-cool. If the blob is being rehydrated and is not complete then this header is returned indicating that rehydrate is pending and also tells the destination tier. + + + + + The time the tier was changed on the object. This is only returned if the tier on the block blob was ever set. + + + + + A DateTime value returned by the service that uniquely identifies the blob. The value of this header indicates the blob version, and may be used in subsequent requests to access this version of the blob. + + + + + The value of this header indicates whether version of this blob is a current version, see also x-ms-version-id header. + + + + + The number of tags associated with the blob + + + + + The time this blob will expire. + + + + + If this blob has been sealed + + + + + If an object is in rehydrate pending state then this header is returned with priority of rehydrate. Valid values are High and Standard. + + + + + UTC date/time value generated by the service that indicates the time at which the blob was last read or written to + + + + + Creates a new BlobPropertiesInternal instance + + + + + the retention policy which determines how long the associated data should persist + + + + + Indicates whether a retention policy is enabled for the storage service + + + + + Indicates the number of days that metrics or logging or soft-deleted data should be retained. All data older than this value will be deleted + + + + + Creates a new BlobRetentionPolicy instance + + + + + Serialize a BlobRetentionPolicy instance as XML. + + The BlobRetentionPolicy instance to serialize. + An optional name to use for the root element instead of "RetentionPolicy". + An optional namespace to use for the root element instead of "". + The serialized XML element. + + + + Deserializes XML into a new BlobRetentionPolicy instance. + + The XML element to deserialize. + A deserialized BlobRetentionPolicy instance. + + + + Storage Service Properties. + + + + + Azure Analytics Logging settings. + + + + + a summary of request statistics grouped by API in hour or minute aggregates for blobs + + + + + a summary of request statistics grouped by API in hour or minute aggregates for blobs + + + + + The set of CORS rules. + + + + + The default version to use for requests to the Blob service if an incoming request's version is not specified. Possible values include version 2008-10-27 and all more recent versions + + + + + the retention policy which determines how long the associated data should persist + + + + + The properties that enable an account to host a static website + + + + + Creates a new BlobServiceProperties instance + + + + + Creates a new BlobServiceProperties instance + + Whether to skip initializing nested objects. + + + + Serialize a BlobServiceProperties instance as XML. + + The BlobServiceProperties instance to serialize. + An optional name to use for the root element instead of "StorageServiceProperties". + An optional namespace to use for the root element instead of "". + The serialized XML element. + + + + Deserializes XML into a new BlobServiceProperties instance. + + The XML element to deserialize. + A deserialized BlobServiceProperties instance. + + + + Statistics for the storage service. + + + + + Geo-Replication information for the Secondary Storage Service + + + + + Creates a new BlobServiceStatistics instance + + + + + Creates a new BlobServiceStatistics instance + + Whether to skip initializing nested objects. + + + + Deserializes XML into a new BlobServiceStatistics instance. + + The XML element to deserialize. + A deserialized BlobServiceStatistics instance. + + + + BlobSetExpiryInternal + + + + + 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. + + + + + 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. + + + + + Prevent direct instantiation of BlobSetExpiryInternal instances. + You can use BlobsModelFactory.BlobSetExpiryInternal instead. + + + + + signed identifier + + + + + a unique id + + + + + An Access policy + + + + + Creates a new BlobSignedIdentifier instance + + + + + Creates a new BlobSignedIdentifier instance + + Whether to skip initializing nested objects. + + + + Serialize a BlobSignedIdentifier instance as XML. + + The BlobSignedIdentifier instance to serialize. + An optional name to use for the root element instead of "SignedIdentifier". + An optional namespace to use for the root element instead of "". + The serialized XML element. + + + + Deserializes XML into a new BlobSignedIdentifier instance. + + The XML element to deserialize. + A deserialized BlobSignedIdentifier instance. + + + + BlobSnapshotInfo + + + + + Uniquely identifies the snapshot and indicates the snapshot version. It may be used in subsequent requests to access the snapshot + + + + + 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. + + + + + 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. + + + + + A DateTime value returned by the service that uniquely identifies the blob. The value of this header indicates the blob version, and may be used in subsequent requests to access this version of the blob. + + + + + True if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise. For a snapshot request, this header is set to true when metadata was provided in the request and encrypted with a customer-provided key. + + + + + Prevent direct instantiation of BlobSnapshotInfo instances. + You can use BlobsModelFactory.BlobSnapshotInfo instead. + + + + + The properties that enable an account to host a static website + + + + + Indicates whether this account is hosting a static website + + + + + The default name of the index page under each directory + + + + + The absolute path of the custom 404 page + + + + + Absolute path of the default index page + + + + + Creates a new BlobStaticWebsite instance + + + + + Serialize a BlobStaticWebsite instance as XML. + + The BlobStaticWebsite instance to serialize. + An optional name to use for the root element instead of "StaticWebsite". + An optional namespace to use for the root element instead of "". + The serialized XML element. + + + + Deserializes XML into a new BlobStaticWebsite instance. + + The XML element to deserialize. + A deserialized BlobStaticWebsite instance. + + + + BlobTag + + + + + Key + + + + + Value + + + + + Creates a new BlobTag instance + + + + + Serialize a BlobTag instance as XML. + + The BlobTag instance to serialize. + An optional name to use for the root element instead of "Tag". + An optional namespace to use for the root element instead of "". + The serialized XML element. + + + + Deserializes XML into a new BlobTag instance. + + The XML element to deserialize. + A deserialized BlobTag instance. + + + + Blob tags + + + + + BlobTagSet + + + + + Creates a new BlobTags instance + + + + + Creates a new BlobTags instance + + Whether to skip initializing nested objects. + + + + Serialize a BlobTags instance as XML. + + The BlobTags instance to serialize. + An optional name to use for the root element instead of "Tags". + An optional namespace to use for the root element instead of "". + The serialized XML element. + + + + Deserializes XML into a new BlobTags instance. + + The XML element to deserialize. + A deserialized BlobTags instance. + + + + BlobType values + + + + + BlockBlob + + + + + PageBlob + + + + + AppendBlob + + + + + An enumeration of blobs + + + + + ServiceEndpoint + + + + + ContainerName + + + + + Prefix + + + + + Marker + + + + + MaxResults + + + + + NextMarker + + + + + BlobItems + + + + + Creates a new BlobsFlatSegment instance + + + + + Creates a new BlobsFlatSegment instance + + Whether to skip initializing nested objects. + + + + Deserializes XML into a new BlobsFlatSegment instance. + + The XML element to deserialize. + A deserialized BlobsFlatSegment instance. + + + + An enumeration of blobs + + + + + ServiceEndpoint + + + + + ContainerName + + + + + Prefix + + + + + Marker + + + + + MaxResults + + + + + Delimiter + + + + + NextMarker + + + + + BlobItems + + + + + BlobPrefixes + + + + + Creates a new BlobsHierarchySegment instance + + + + + Creates a new BlobsHierarchySegment instance + + Whether to skip initializing nested objects. + + + + Deserializes XML into a new BlobsHierarchySegment instance. + + The XML element to deserialize. + A deserialized BlobsHierarchySegment instance. + + + + BlockInfo + + + + + 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. + + + + + 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. + + + + + The SHA-256 hash of the encryption key used to encrypt the block. This header is only returned when the block was encrypted with a customer-provided key. + + + + + Returns the name of the encryption scope used to encrypt the blob contents and application metadata. Note that the absence of this header implies use of the default account encryption scope. + + + + + Prevent direct instantiation of BlockInfo instances. + You can use BlobsModelFactory.BlockInfo instead. + + + + + BlockList + + + A block blob's returned from + . + + + + + CommittedBlocks + + + + + UncommittedBlocks + + + + + Creates a new BlockList instance + + + + + Creates a new BlockList instance + + Whether to skip initializing nested objects. + + + + Deserializes XML into a new BlockList instance. + + The XML element to deserialize. + A deserialized BlockList instance. + + + + Gets 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. + + + + + The 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. + + + + + The media type of the body of the response. For the + + operation this is 'application/xml'. + + + + + The size of the blob, in bytes. + + + + + Specifies whether to return the list of committed blocks, the list of uncommitted blocks, or both lists together. + + + + + committed + + + + + uncommitted + + + + + all + + + + + A list of block IDs split between the committed block list, in the uncommitted block list, or in the uncommitted block list first and then in the committed block list. + + + + + Committed + + + + + Uncommitted + + + + + Latest + + + + + Creates a new BlockLookupList instance + + + + + Serialize a BlockLookupList instance as XML. + + The BlockLookupList instance to serialize. + An optional name to use for the root element instead of "BlockList". + An optional namespace to use for the root element instead of "". + The serialized XML element. + + + + BrokenLease + + + + + 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. + + + + + 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. + + + + + Approximate time remaining in the lease period, in seconds. + + + + + Prevent direct instantiation of BrokenLease instances. + You can use BlobsModelFactory.BrokenLease instead. + + + + + ClearRange + + + + + Start + + + + + End + + + + + Prevent direct instantiation of ClearRange instances. + You can use BlobsModelFactory.ClearRange instead. + + + + + Deserializes XML into a new ClearRange instance. + + The XML element to deserialize. + A deserialized ClearRange instance. + + + + ConditionNotMetError + + + Convert ConditionNotMetErrors into StorageRequestFailedExceptions. + + + + + x-ms-error-code + + + + + Prevent direct instantiation of ConditionNotMetError instances. + You can use BlobsModelFactory.ConditionNotMetError instead. + + + + + Create an exception corresponding to the ConditionNotMetError. + + The instance to use. + The failed response. + A RequestFailedException. + + + + CopyStatus values + + + + + pending + + + + + success + + + + + aborted + + + + + failed + + + + + DataLakeStorageError + + + Convert DataLakeStorageError into StorageRequestFailedExceptions. + + + + + The service error response object. + + + + + Creates a new DataLakeStorageError instance + + + + + Creates a new DataLakeStorageError instance + + Whether to skip initializing nested objects. + + + + Deserializes XML into a new DataLakeStorageError instance. + + The XML element to deserialize. + A deserialized DataLakeStorageError instance. + + + + Create an exception corresponding to the DataLakeStorageError. + + The instance to use. + The failed response. + A RequestFailedException. + + + + The service error response object. + + + + + The service error code. + + + + + The service error message. + + + + + Prevent direct instantiation of DataLakeStorageErrorDetails instances. + You can use BlobsModelFactory.DataLakeStorageErrorDetails instead. + + + + + Deserializes XML into a new DataLakeStorageErrorDetails instance. + + The XML element to deserialize. + A deserialized DataLakeStorageErrorDetails instance. + + + + Required if the blob has associated snapshots. Specify one of the following two options: include: Delete the base blob and all of its snapshots. only: Delete only the blob's snapshots and not the blob itself + + + + + none + + + + + include + + + + + only + + + + + delimited text configuration + + + + + column separator + + + + + field quote + + + + + record separator + + + + + escape char + + + + + has headers + + + + + Creates a new DelimitedTextConfigurationInternal instance + + + + + Serialize a DelimitedTextConfigurationInternal instance as XML. + + The DelimitedTextConfigurationInternal instance to serialize. + An optional name to use for the root element instead of "DelimitedTextConfiguration". + An optional namespace to use for the root element instead of "". + The serialized XML element. + + + + Directory CreateResult + + + + + An HTTP entity tag associated with the file or directory. + + + + + The data and time the file or directory was last modified. Write operations on the file or directory update the last modified time. + + + + + The size of the resource in bytes. + + + + + Prevent direct instantiation of DirectoryCreateResult instances. + You can use BlobsModelFactory.DirectoryCreateResult instead. + + + + + Directory DeleteResult + + + + + 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. + + + + + Prevent direct instantiation of DirectoryDeleteResult instances. + You can use BlobsModelFactory.DirectoryDeleteResult instead. + + + + + Directory GetAccessControlResult + + + + + An HTTP entity tag associated with the file or directory. + + + + + The data and time the file or directory was last modified. Write operations on the file or directory update the last modified time. + + + + + The owner of the file or directory. Included in the response if Hierarchical Namespace is enabled for the account. + + + + + The owning group of the file or directory. Included in the response if Hierarchical Namespace is enabled for the account. + + + + + 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. + + + + + 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. + + + + + Prevent direct instantiation of DirectoryGetAccessControlResult instances. + You can use BlobsModelFactory.DirectoryGetAccessControlResult instead. + + + + + Directory RenameResult + + + + + 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. + + + + + An HTTP entity tag associated with the file or directory. + + + + + The data and time the file or directory was last modified. Write operations on the file or directory update the last modified time. + + + + + The size of the resource in bytes. + + + + + Prevent direct instantiation of DirectoryRenameResult instances. + You can use BlobsModelFactory.DirectoryRenameResult instead. + + + + + Directory SetAccessControlResult + + + + + An HTTP entity tag associated with the file or directory. + + + + + The data and time the file or directory was last modified. Write operations on the file or directory update the last modified time. + + + + + Prevent direct instantiation of DirectorySetAccessControlResult instances. + You can use BlobsModelFactory.DirectorySetAccessControlResult instead. + + + + + 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. + + + + + AES256 + + + + + FailureNoContent + + + Convert FailureNoContent into StorageRequestFailedExceptions. + + + + + x-ms-error-code + + + + + Prevent direct instantiation of FailureNoContent instances. + You can use BlobsModelFactory.FailureNoContent instead. + + + + + Create an exception corresponding to the FailureNoContent. + + The instance to use. + The failed response. + A RequestFailedException. + + + + Blob info from a Filter Blobs API call + + + + + Name + + + + + ContainerName + + + + + Blob tags + + + + + Creates a new FilterBlobItem instance + + + + + Creates a new FilterBlobItem instance + + Whether to skip initializing nested objects. + + + + Deserializes XML into a new FilterBlobItem instance. + + The XML element to deserialize. + A deserialized FilterBlobItem instance. + + + + The result of a Filter Blobs API call + + + + + ServiceEndpoint + + + + + Where + + + + + Blobs + + + + + NextMarker + + + + + Creates a new FilterBlobSegment instance + + + + + Creates a new FilterBlobSegment instance + + Whether to skip initializing nested objects. + + + + Deserializes XML into a new FilterBlobSegment instance. + + The XML element to deserialize. + A deserialized FilterBlobSegment instance. + + + + FlattenedContainerItem + + + + + x-ms-meta + + + + + 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. + + + + + 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. + + + + + When a blob is leased, specifies whether the lease is of infinite or fixed duration. + + + + + Lease state of the blob. + + + + + The current lease status of the blob. + + + + + Indicated whether data in the container may be accessed publicly and the level of access + + + + + Indicates whether the container has an immutability policy set on it. + + + + + Indicates whether the container has a legal hold. + + + + + The default encryption scope for the container. + + + + + Indicates whether the container's default encryption scope can be overriden. + + + + + Creates a new FlattenedContainerItem instance + + + + + FlattenedDownloadProperties + + + + + 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-meta + + + + + Optional. Only valid when Object Replication is enabled for the storage container and on the destination blob of the replication. + + + + + Optional. Only valid when Object Replication is enabled for the storage container and on the source blob of the replication. When retrieving this header, it will return the header with the policy id and rule id (e.g. x-ms-or-policyid_ruleid), and the value will be the status of the replication (e.g. complete, failed). + + + + + The number of bytes present in the response body. + + + + + The media type of the body of the response. For Download Blob this is 'application/octet-stream' + + + + + Indicates the range of bytes returned in the event that the client requested a subset of the blob by setting the 'Range' request header. + + + + + 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. + + + + + 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. + + + + + This header returns the value that was specified for the Content-Encoding request header + + + + + This header is returned if it was previously specified for the blob. + + + + + This header returns the value that was specified for the 'x-ms-blob-content-disposition' header. The Content-Disposition response header field conveys additional information about how to process the response payload, and also can be used to attach additional metadata. For example, if set to attachment, it indicates that the user-agent should not display the response, but instead show a Save As dialog with a filename other than the blob name specified. + + + + + This header returns the value that was specified for the Content-Language request header. + + + + + The current sequence number for a page blob. This header is not returned for block blobs or append blobs + + + + + The blob's type. + + + + + If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to true, then the request returns a crc64 for the range, as long as the range size is less than or equal to 4 MB. If both x-ms-range-get-content-crc64 and x-ms-range-get-content-md5 is specified in the same request, it will fail with 400(Bad Request) + + + + + Conclusion time of the last attempted Copy Blob operation where this blob was the destination blob. This value can specify the time of a completed, aborted, or failed copy attempt. This header does not appear if a copy is pending, if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List. + + + + + Only appears when x-ms-copy-status is failed or pending. Describes the cause of the last fatal or non-fatal copy operation failure. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List + + + + + String identifier for this copy operation. Use with Get Blob Properties to check the status of this copy operation, or pass to Abort Copy Blob to abort a pending copy. + + + + + Contains the number of bytes copied and the total bytes in the source in the last attempted Copy Blob operation where this blob was the destination blob. Can show between 0 and Content-Length bytes copied. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List + + + + + URL up to 2 KB in length that specifies the source blob or file used in the last attempted Copy Blob operation where this blob was the destination blob. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List. + + + + + State of the copy operation identified by x-ms-copy-id. + + + + + When a blob is leased, specifies whether the lease is of infinite or fixed duration. + + + + + Lease state of the blob. + + + + + The current lease status of the blob. + + + + + Indicates that the service supports requests for partial blob content. + + + + + The number of committed blocks present in the blob. This header is returned only for append blobs. + + + + + The value of this header is set to true if the blob data and application metadata are completely encrypted using the specified algorithm. Otherwise, the value is set to false (when the blob is unencrypted, or if only parts of the blob/application metadata are encrypted). + + + + + 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. + + + + + Returns the name of the encryption scope used to encrypt the blob contents and application metadata. Note that the absence of this header implies use of the default account encryption scope. + + + + + If the blob 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 whole blob'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 + + + + + The number of tags associated with the blob + + + + + If this blob has been sealed + + + + + UTC date/time value generated by the service that indicates the time at which the blob was last read or written to + + + + + A DateTime value returned by the service that uniquely identifies the blob. The value of this header indicates the blob version, and may be used in subsequent requests to access this version of the blob. + + + + + Content + + + + + Creates a new FlattenedDownloadProperties instance + + + + + GetBlockListOperation + + + + + 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. + + + + + 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. + + + + + The media type of the body of the response. For Get Block List this is 'application/xml' + + + + + The size of the blob in bytes. + + + + + Body + + + + + Creates a new GetBlockListOperation instance + + + + + json text configuration + + + + + record separator + + + + + Creates a new JsonTextConfigurationInternal instance + + + + + Serialize a JsonTextConfigurationInternal instance as XML. + + The JsonTextConfigurationInternal instance to serialize. + An optional name to use for the root element instead of "JsonTextConfiguration". + An optional namespace to use for the root element instead of "". + The serialized XML element. + + + + Key information + + + + + The date-time the key is active in ISO 8601 UTC time + + + + + The date-time the key expires in ISO 8601 UTC time + + + + + Creates a new KeyInfo instance + + + + + Serialize a KeyInfo instance as XML. + + The KeyInfo instance to serialize. + An optional name to use for the root element instead of "KeyInfo". + An optional namespace to use for the root element instead of "". + The serialized XML element. + + + + LeaseDurationType values + + + + + infinite + + + + + fixed + + + + + LeaseState values + + + + + available + + + + + leased + + + + + expired + + + + + breaking + + + + + broken + + + + + LeaseStatus values + + + + + locked + + + + + unlocked + + + + + ListBlobsIncludeItem values + + + + + copy + + + + + deleted + + + + + metadata + + + + + snapshots + + + + + uncommittedblobs + + + + + versions + + + + + tags + + + + + ListContainersIncludeType values + + + + + metadata + + + + + deleted + + + + + PageBlobInfo + + + + + 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. + + + + + Returns the date and time the blob 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. + + + + + The current sequence number for the page blob. This is only returned for page blobs. + + + + + Prevent direct instantiation of PageBlobInfo instances. + You can use BlobsModelFactory.PageBlobInfo instead. + + + + + PageInfo + + + + + 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. + + + + + 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. + + + + + 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. + + + + + 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. + + + + + The current sequence number for the page blob. This is only returned for page blobs. + + + + + The SHA-256 hash of the encryption key used to encrypt the pages. This header is only returned when the pages were encrypted with a customer-provided key. + + + + + Returns the name of the encryption scope used to encrypt the blob contents and application metadata. Note that the absence of this header implies use of the default account encryption scope. + + + + + Prevent direct instantiation of PageInfo instances. + You can use BlobsModelFactory.PageInfo instead. + + + + + the list of pages + + + + + PageRange + + + + + ClearRange + + + + + Creates a new PageList instance + + + + + Creates a new PageList instance + + Whether to skip initializing nested objects. + + + + Deserializes XML into a new PageList instance. + + The XML element to deserialize. + A deserialized PageList instance. + + + + PageRange + + + + + Start + + + + + End + + + + + Prevent direct instantiation of PageRange instances. + You can use BlobsModelFactory.PageRange instead. + + + + + Check if two PageRange instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + Check if two PageRange instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + Get a hash code for the PageRange. + + + + + Deserializes XML into a new PageRange instance. + + The XML element to deserialize. + A deserialized PageRange instance. + + + + PageRangesInfoInternal + + + + + 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. + + + + + 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. + + + + + The size of the blob in bytes. + + + + + the list of pages + + + + + Creates a new PageRangesInfoInternal instance + + + + + Determines the behavior of the rename operation + + + + + legacy + + + + + posix + + + + + Specifies whether data in the container may be accessed publicly and the level of access + + + + + none + + + + + container + + + + + blob + + + + + QueryFormat + + + + + The quick query format type. + + + + + delimited text configuration + + + + + json text configuration + + + + + arrow configuration + + + + + Creates a new QueryFormat instance + + + + + Serialize a QueryFormat instance as XML. + + The QueryFormat instance to serialize. + An optional name to use for the root element instead of "QueryFormat". + An optional namespace to use for the root element instead of "". + The serialized XML element. + + + + The quick query format type. + + + + + delimited + + + + + json + + + + + arrow + + + + + the quick query body + + + + + the query type + + + + + a query statement + + + + + InputSerialization + + + + + OutputSerialization + + + + + Creates a new QueryRequest instance + + + + + Serialize a QueryRequest instance as XML. + + The QueryRequest instance to serialize. + An optional name to use for the root element instead of "QueryRequest". + An optional namespace to use for the root element instead of "". + The serialized XML element. + + + + QuerySerialization + + + + + Format + + + + + Creates a new QuerySerialization instance + + + + + Serialize a QuerySerialization instance as XML. + + The QuerySerialization instance to serialize. + An optional name to use for the root element instead of "QuerySerialization". + An optional namespace to use for the root element instead of "". + The serialized XML element. + + + + Optional: Indicates the priority with which to rehydrate an archived blob. + + + + + High + + + + + Standard + + + + + Required if the x-ms-blob-sequence-number header is set for the request. This property applies to page blobs only. This property indicates how the service should modify the blob's sequence number + + + + + max + + + + + update + + + + + increment + + + + + SetHttpHeadersOperation + + + + + 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. + + + + + 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. + + + + + The current sequence number for a page blob. This header is not returned for block blobs or append blobs + + + + + Prevent direct instantiation of SetHttpHeadersOperation instances. + You can use BlobsModelFactory.SetHttpHeadersOperation instead. + + + + + SetMetadataOperation + + + + + 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. + + + + + 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. + + + + + A DateTime value returned by the service that uniquely identifies the blob. The value of this header indicates the blob version, and may be used in subsequent requests to access this version of the blob. + + + + + 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. + + + + + The SHA-256 hash of the encryption key used to encrypt the metadata. This header is only returned when the metadata was encrypted with a customer-provided key. + + + + + Returns the name of the encryption scope used to encrypt the blob contents and application metadata. Note that the absence of this header implies use of the default account encryption scope. + + + + + Prevent direct instantiation of SetMetadataOperation instances. + You can use BlobsModelFactory.SetMetadataOperation instead. + + + + + Identifies the sku name of the account + + + + + Standard_LRS + + + + + Standard_GRS + + + + + Standard_RAGRS + + + + + Standard_ZRS + + + + + Premium_LRS + + + + + StorageError + + + Convert StorageErrors into StorageRequestFailedExceptions. + + + + + Message + + + + + Code + + + + + Prevent direct instantiation of StorageError instances. + You can use BlobsModelFactory.StorageError instead. + + + + + Deserializes XML into a new StorageError instance. + + The XML element to deserialize. + A deserialized StorageError instance. + + + + Additional error information. + + + + + Create an exception corresponding to the StorageError. + + The instance to use. + The failed response. + A RequestFailedException. + + + + A user delegation key + + + + + The Azure Active Directory object ID in GUID format. + + + + + The Azure Active Directory tenant ID in GUID format + + + + + Abbreviation of the Azure Storage service that accepts the key + + + + + The service version that created the key + + + + + The key as a base64 string + + + + + The date-time the key expires + + + + + The date-time the key is active + + + + + Prevent direct instantiation of UserDelegationKey instances. + You can use BlobsModelFactory.UserDelegationKey instead. + + + + + Deserializes XML into a new UserDelegationKey instance. + + The XML element to deserialize. + A deserialized UserDelegationKey instance. + + + + Optional parameters for creating an Append Blob. + + + + + Optional standard HTTP header properties that can be set for the + new append blob. + + + + + Optional custom metadata to set for this append blob. + + + + + Options tags to set for this append blob. + + + + + Optional to add + conditions on the creation of this new append blob. + + + + + Optional parameters for Append Blob Open Write. + + + + + The size of the buffer to use. Default is 4 MB, + max is 4 MB. See . + + + + + Access conditions used to open the write stream. + + + + + Optional to provide + progress updates about data transfers. + + + + + Specifies append blob specific access conditions. + + + + + IfAppendPositionEqual ensures that the AppendBlock operation + succeeds only if the append position is equal to a value. + + + + + IfMaxSizeLessThanOrEqual ensures that the AppendBlock operation + succeeds only if the append blob's size is less than or equal to + a value. + + + + + Collect any request conditions. Conditions should be separated by + a semicolon. + + The collected conditions. + + + + Encryption scope options to be used when creating a container. + + + + + Specifies the default encryption scope to set on the container and use for all future writes. + + + + + If true, prevents any request from specifying a different encryption scope than the scope set on the container. + + + + + Specifies options for listing blob containers with the + + operation. + + + + + Default flag specifying that no flags are set in . + + + + + Flag specifying that deleted containers should be included. + + + + + Specifies options for listing blob containers with the + + operation. + + + + + Default flag specifying that no flags are set in . + + + + + Flag specifying that the container's metadata should + be included. + + + + + Optional parameters for Start Copy from URL. + + + + + Optional custom metadata to set for this append blob. + + + + + Options tags to set for this append blob. + + + + + Optional + Indicates the tier to be set on the blob. + + + + + Optional to add + conditions on the copying of data from this source blob. + + + + + Optional to add conditions on + the copying of data to this blob. + + + + + Optional + Indicates the priority with which to rehydrate an archived blob. + + This parameter is not valid for synchronous copies. + + + + + If the destination blob should be sealed. + Only applicable for Append Blobs. + + This parameter is not valid for synchronous copies. + + + + + Either a or returned from + . + + + + + Gets a prefix, relative to the delimiter used to get the blobs. + + + + + Gets a blob. + + + + + Gets a value indicating if this item represents a . + + + + + Gets a value indicating if this item represents a . + + + + + Initialies a new instance of the BlobHierarchyItem class. + + + A prefix, relative to the delimiter used to get the blobs. + + + A blob. + + + + + Standard HTTP properties supported by containers and blobs. + These properties are represented as standard HTTP headers use standard + names, as specified in the Header Field Definitions section 14 of the + HTTP/1.1 protocol specification. + + For more information, see + + Setting and retrieving properties and metadata for Blob service resources. + + + + + The MIME content type of the blob. + + + + + An MD5 hash of the blob content. This hash is used to verify the + integrity of the blob during transport. When this header is + specified, the storage service checks the hash that has arrived + with the one that was sent. If the two hashes do not match, the + operation will fail with error code 400 (Bad Request). + + + + + Specifies which content encodings have been applied to the blob. + This value is returned to the client when the Get Blob operation + is performed on the blob resource. The client can use this value + when returned to decode the blob content. + + + + + Specifies the natural languages used by this resource. + + + + + Conveys additional information about how to process the response + payload, and also can be used to attach additional metadata. For + example, if set to attachment, it indicates that the user-agent + should not display the response, but instead show a Save As dialog + with a filename other than the blob name specified. + + + + + Specify directives for caching mechanisms. + + + + + Creates a string representation of a + . + + + + + Check if two instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + Get a hash code for the . + + Hash code for the . + + + + The details and Content returned from downloading a blob + + + + + Internal flattened property representation + + + + + The blob's type. + + + + + The number of bytes present in the response body. + + + + + Content + + + + + The media type of the body of the response. For Download Blob this is 'application/octet-stream' + + + + + 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. + + + + + Details returned when downloading a Blob + + + + + Creates a new DownloadInfo backed by FlattenedDownloadProperties + + The FlattenedDownloadProperties returned with the request + + + + Disposes the BlobDownloadInfo by calling Dispose on the underlying Content stream. + + + + + Details returned when downloading a Blob + + + + + 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-meta + + + + + Indicates the range of bytes returned in the event that the client requested a subset of the blob by setting the 'Range' request header. + + + + + 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. + + + + + This header returns the value that was specified for the Content-Encoding request header + + + + + This header is returned if it was previously specified for the blob. + + + + + This header returns the value that was specified for the 'x-ms-blob-content-disposition' header. The Content-Disposition response header field conveys additional information about how to process the response payload, and also can be used to attach additional metadata. For example, if set to attachment, it indicates that the user-agent should not display the response, but instead show a Save As dialog with a filename other than the blob name specified. + + + + + This header returns the value that was specified for the Content-Language request header. + + + + + The current sequence number for a page blob. This header is not returned for block blobs or append blobs + + + + + Conclusion time of the last attempted Copy Blob operation where this blob was the destination blob. This value can specify the time of a completed, aborted, or failed copy attempt. This header does not appear if a copy is pending, if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List. + + + + + Only appears when x-ms-copy-status is failed or pending. Describes the cause of the last fatal or non-fatal copy operation failure. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List + + + + + String identifier for this copy operation. Use with Get Blob Properties to check the status of this copy operation, or pass to Abort Copy Blob to abort a pending copy. + + + + + Contains the number of bytes copied and the total bytes in the source in the last attempted Copy Blob operation where this blob was the destination blob. Can show between 0 and Content-Length bytes copied. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List + + + + + URL up to 2 KB in length that specifies the source blob or file used in the last attempted Copy Blob operation where this blob was the destination blob. This header does not appear if this blob has never been the destination in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List. + + + + + State of the copy operation identified by x-ms-copy-id. + + + + + When a blob is leased, specifies whether the lease is of infinite or fixed duration. + + + + + Lease state of the blob. + + + + + The current lease status of the blob. + + + + + Indicates that the service supports requests for partial blob content. + + + + + The number of committed blocks present in the blob. This header is returned only for append blobs. + + + + + The value of this header is set to true if the blob data and application metadata are completely encrypted using the specified algorithm. Otherwise, the value is set to false (when the blob is unencrypted, or if only parts of the blob/application metadata are encrypted). + + + + + 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. + + + + + The encryption scope used to encrypt the blob. + + + + + If the blob 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 whole blob'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 + + + + + The number of tags associated with the blob. + + + + + A DateTime value returned by the service that uniquely identifies the blob. The value of this header indicates the blob version, and may be used in subsequent requests to access this version of the blob. + + + + + If this blob is sealed. + + + + + x-ms-or + + + + + Object Replication Policy Id. This value is only set when the policy id + + + + + Returns the date and time the blob was read or written to. + + + + + An Azure Storage blob. + + + + + Name. + + + + + Deleted. + + + + + Snapshot. + + + + + VersionId. + + + + + IsCurrentVersion. + + + + + Properties of a blob. + + + + + Metadata. + + + + + Tags. + + + + + Object Replication Metadata (OrMetadata) + + + + + Specifies access conditions for leasing operations on a container or blob. + + + + + Optional SQL statement to apply to the Tags of the Blob. + + + + + Optional parameters for + + + + + The position within the blob to begin the stream. + Defaults to the beginning of the blob. + + + + + The buffer size to use when the stream downloads parts + of the blob. Defaults to 4 MB. + + + + + Optional to add conditions on + the download of the blob. + + + + + Constructor. + + + If false, a will be thrown if the blob is modified while + it is being read from. + + + + + Propeties of a Blob + + + + + Returns the date and time the blob 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. + + + + + Returns the date and time the blob was created. + + + + + Metadata. + + + + + Object Replication Policy Id of the destination blob. + + + + + Parsed Object Replication Policy Id, Rule Id(s) and status of the source blob. + + + + + The blob's type. + + + + + Conclusion time of the last attempted Copy Blob operation where this blob was the destination blob. + This value can specify the time of a completed, aborted, or failed copy attempt. This header does + not appear if a copy is pending, if this blob has never been the destination in a Copy Blob operation, + or if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, + Put Blob, or Put Block List. + + + + + Only appears when x-ms-copy-status is failed or pending. Describes the cause of the last fatal or + non-fatal copy operation failure. This header does not appear if this blob has never been the destination + in a Copy Blob operation, or if this blob has been modified after a concluded Copy Blob operation using + Set Blob Properties, Put Blob, or Put Block List + + + + + String identifier for this copy operation. Use with Get Blob Properties to check the status of this copy + operation, or pass to Abort Copy Blob to abort a pending copy. + + + + + Contains the number of bytes copied and the total bytes in the source in the last attempted Copy Blob + operation where this blob was the destination blob. Can show between 0 and Content-Length bytes copied. + This header does not appear if this blob has never been the destination in a Copy Blob operation, or + if this blob has been modified after a concluded Copy Blob operation using Set Blob Properties, Put + Blob, or Put Block List. + + + + + URL up to 2 KB in length that specifies the source blob or file used in the last attempted Copy Blob + operation where this blob was the destination blob. This header does not appear if this blob has never + been the destination in a Copy Blob operation, or if this blob has been modified after a concluded + Copy Blob operation using Set Blob Properties, Put Blob, or Put Block List. + + + + + State of the copy operation identified by x-ms-copy-id. + + + + + Included if the blob is incremental copy blob. + + + + + Included if the blob is incremental copy blob or incremental copy snapshot, if x-ms-copy-status is success. + Snapshot time of the last successful incremental copy snapshot for this blob. + + + + + When a blob is leased, specifies whether the lease is of infinite or fixed duration. + + + + + Lease state of the blob. + + + + + The current lease status of the blob. + + + + + The number of bytes present in the response body. + + + + + The content type specified for the blob. The default content type is 'application/octet-stream'. + + + + + 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. + + + + + 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. + + + + + This header returns the value that was specified for the Content-Encoding request header. + + + + + This header returns the value that was specified for the 'x-ms-blob-content-disposition' header. + The Content-Disposition response header field conveys additional information about how to process + the response payload, and also can be used to attach additional metadata. For example, if set to + attachment, it indicates that the user-agent should not display the response, but instead show a + Save As dialog with a filename other than the blob name specified. + + + + + This header returns the value that was specified for the Content-Language request header. + + + + + This header is returned if it was previously specified for the blob. + + + + + The current sequence number for a page blob. This header is not returned for block blobs or append blobs. + + + + + Indicates that the service supports requests for partial blob content. + + + + + The number of committed blocks present in the blob. This header is returned only for append blobs. + + + + + The value of this header is set to true if the blob data and application metadata are completely encrypted + using the specified algorithm. Otherwise, the value is set to false (when the blob is unencrypted, or if + only parts of the blob/application metadata are encrypted). + + + + + The SHA-256 hash of the encryption key used to encrypt the metadata. This header is only returned when the + metadata was encrypted with a customer-provided key. + + + + + Returns the name of the encryption scope used to encrypt the blob contents and application metadata. + Note that the absence of this header implies use of the default account encryption scope. + + + + + The tier of page blob on a premium storage account or tier of block blob on blob storage LRS accounts. + For a list of allowed premium page blob tiers, see + https://docs.microsoft.com/en-us/azure/virtual-machines/windows/premium-storage#features. For blob + storage LRS accounts, valid values are Hot/Cool/Archive. + + + + + For page blobs on a premium storage account only. If the access tier is not explicitly set on the blob, + the tier is inferred based on its content length and this header will be returned with true value. + + + + + For blob storage LRS accounts, valid values are rehydrate-pending-to-hot/rehydrate-pending-to-cool. + If the blob is being rehydrated and is not complete then this header is returned indicating that + rehydrate is pending and also tells the destination tier. + + + + + The time the tier was changed on the object. This is only returned if the tier on the block blob was ever set. + + + + + A DateTime value returned by the service that uniquely identifies the blob. The value of this header + indicates the blob version, and may be used in subsequent requests to access this version of the blob. + + + + + The value of this header indicates whether version of this blob is a current version, see also x-ms-version-id header. + + + + + The number of tags associated with the blob. + + + + + The time this blob will expire. + + + + + If this blob has been sealed. + + + + + If this blob is in rehydrate pending state, this indicates the rehydrate priority. + + + + + Returns the date and time the blob was read or written to. + + + + + Constructor. + + + + + Describe a field in . + + + + + The type of the field. Required. + + + + + The name of the field. Optional. + + + + + The precision of the field. Required if Type is . + + + + + The scale of the field. Required if Type is . + + + + + The type of a . + + + + + Int64. + + + + + Bool. + + + + + Timestamp in milliseconds. + + + + + String. + + + + + Double. + + + + + Decimal. + + + + + Arrow configuration. Only valid for . + + + + + List of describing the schema of the data. + + + + + CSV text configuration. + + + + + Record Separator. + + + + + Column separator. + + + + + Field quote. + + + + + Escape character. + + + + + Has headers. + + + + + Blob query error. + + + + + Name. + + + + + Description. + + + + + If the error is a fatal error. + + + + + The position of the error. + + + + + JSON text configuration. + + + + + Record Separator. + + + + + Optional parameters for . + + + + + Optional input text configuration. + + + + + Optional output text configuration. + + + + + Optional callback for error handling. + + + + + Internal error handler. + + + + + Optional to add conditions on the query. + + + + + Optional progress handler. + + + + + Blob Query Text Configuration. + See and . + + + + + Specifies blob lease access conditions for a container or blob. + + + + + Optionally limit requests to resources with an active lease + matching this Id. + + + + + Converts the value of the current RequestConditions object to + its equivalent string representation. + + + A string representation of the RequestConditions. + + + + + Collect any request conditions. Conditions should be separated by + a semicolon. + + The collected conditions. + + + + Specifies states to be used to determine the blobs that will be included + when using the and + + operations. + + + + + Default flag specifying that no flags are set in . + + + + + Flag specifying that the blob's snapshots should be + included. Snapshots are listed from oldest to newest. + + + + + Flag specifying that blobs for which blocks have + been uploaded, but which have not been committed using + should be + included. + + + + + Flag specifying that soft deleted blobs should be + included in the response. + + + + + Flag specifying that the blob's version should be + included. Versions are listed from oldest to newest. + + + + + Flag specifying that blobs of all states should be included. + + + + + Optional parameters for . + + + + + The copy source blob properties behavior. If true, the properties + of the source blob will be copied to the new blob. Default is true. + + + + + Optional standard HTTP header properties that can be set for the + new append blob. + + + + + Options tags to set for this block blob. + + + + + Optional to add + conditions on the copyig of data to this Block Blob. + + + + + Optional to add + conditions on the copying of data from this source blob. + + + + + Optional to set on the + Block Blob. + + + + + Optional. An MD5 hash of the content. This hash is used to verify the integrity of the content during + transport. When this header is specified, the storage service compares the hash of the content that has arrived + with this header value. Note that this MD5 hash is not stored with the blob.If the two hashes do not match, the + operation will fail. + + + + + Specifies trait information to be included when listing blobs with the + and + + operations. + + + + + Flag specifying only the default information for blobs + should be included. + + + + + Flag specifying that metadata related to any current + or previous copy operation should be included. + + + + + Flag specifying that the blob's metadata should be + included. + + + + + Flat specifying that the blob's tags should be included. + + + + + Flag specifying that all traits should be included. + + + + + Optional paratmers for uploading to a Blob. + + + + + Optional standard HTTP header properties that can be set for the + new append blob. + + + + + Optional custom metadata to set for this append blob. + + + + + Options tags to set for this block blob. + + + + + Optional to add + conditions on the upload of this Block Blob. + + + + + Optional to provide + progress updates about data transfers. + + + + + Optional to set on the + Block Blob. + + + + + Optional to configure + parallel transfer behavior. + + + + + Optional parameters for Page Blob Open Write. + + + + + The size of the buffer to use. Default is 4 MB, + max is 4000 MB. See . + + + + + Access conditions used to open the write stream. + + + + + Optional to provide + progress updates about data transfers. + + + + + Optional standard HTTP header properties that can be set for this block blob. + + + + + Optional custom metadata to set for this block blob. + + + + + Options tags to set for this block blob. + + + + + Specifies whether to return the list of committed blocks, the list of uncommitted blocks, or both lists together. + + + + + Flag to specify returning both committed and uncommitted blocks. + + + + + Flag to specify returning the list of committed blocks. + + + + + Flag to specify returning the list of uncommitted blocks. + + + + + Optional paraters for commiting a block list to a + Block Blob. + + + + + Optional standard HTTP header properties that can be set for the + new block blob. + + + + + Optional custom metadata to set for this block blob. + + + + + Options tags to set for this block blob. + + + + + Optional to add + conditions on the upload of this Block Blob. + + + + + Optional to set on the + Block Blob. + + + + + Initializes a new instance of the structure. + + The string value of the instance. + + + + Label for bytes as the measurement of content range. + + + + + Determines if two values are the same. + + The first to compare. + The second to compare. + True if and are the same; otherwise, false. + + + + Determines if two values are different. + + The first to compare. + The second to compare. + True if and are different; otherwise, false. + + + + Converts a string to a . + + The string value to convert. + + + Indicates whether this instance and a specified object are equal.The object to compare with the current instance. if and this instance are the same type and represent the same value; otherwise, . + + + + + + Returns the hash code for this instance.A 32-bit signed integer that is the hash code for this instance. + + + Returns the fully qualified type name of this instance.The fully qualified type name. + + + + Inclusive index where the range starts, measured in this instance's . + + + + + Inclusive index where the range ends, measured in this instance's . + + + + + Size of this range, measured in this instance's . + + + + + Unit this range is measured in. Generally "bytes". + + + + + An for tracking the status of a + + request. Its upon successful + completion will be the number of bytes copied. + + + + + Gets a value indicating whether the operation has completed. + + + + + Gets a value indicating whether the operation completed and + successfully produced a value. The + property is the number of bytes copied by the operation. + + + + + Gets an ID representing the operation that can be used to poll for + the status of the long-running operation. + + + + + Gets the number of bytes copied by the operation. + + + + + The last HTTP response received from the server. + + The last response returned from the server during the lifecycle of this instance. + An instance of Operation sends requests to a server in UpdateStatusAsync, UpdateStatus, and other methods. + Responses from these requests can be accessed using GetRawResponse. + + + + + Periodically calls the server till the long-running operation completes. + A used for the periodical service calls.The last HTTP response received from the server. + This method will periodically call UpdateStatusAsync till HasCompleted is true, then return the final result of the operation. + + + + + Periodically calls the server till the long-running operation completes. + + The interval between status requests to the server. + The interval can change based on information returned from the server. + For example, the server might communicate to the client that there is not reason to poll for status change sooner than some time. + A used for the periodical service calls.The last HTTP response received from the server. + This method will periodically call UpdateStatusAsync till HasCompleted is true, then return the final result of the operation. + + + + + Initializes a new instance for + mocking. + + + + + Initializes a new instance + + + The client used to check for completion. + + The ID of this operation. + + + + Initializes a new instance + + + The client used to check for completion. + + The ID of this operation. + + Either the response from initiating the operation or getting the + status if we're creating an operation from an existing ID. + + + Optional to propagate + notifications that the operation should be cancelled. + + + + + Check for the latest status of the copy operation. + + + Optional to propagate + notifications that the operation should be cancelled. + + The with the status update. + + + + Check for the latest status of the copy operation. + + + Optional to propagate + notifications that the operation should be cancelled. + + The with the status update. + + + + Wrapper for an encryption key to be used with client provided key server-side encryption. + + + + + Base64 encoded string of the AES256 encryption key. + + + + + Base64 encoded string of the AES256 encryption key's SHA256 hash. + + + + + The algorithm for Azure Blob Storage to encrypt with. + Azure Blob Storage only offers AES256 encryption. + + + + + Creates a new CustomerProvidedKey for use in server-side encryption. + + The encryption key encoded as a base64 string. + + + + Creates a new CustomerProvidedKey for use in server-side encryption. + + The encryption key bytes. + + + + Checks if two CustomerProvidedKeyInfo are equal to each other. + + The other instance to compare to. + + + + Get a hash code for the CustomerProvidedKeyInfo. + + Hash code for the CustomerProvidedKeyInfo. + + + + Check if two CustomerProvidedKeyInfo instances are equal. + + The first instance to compare. + The second instance to compare. + True if they're equal, false otherwise. + + + + Check if two CustomerProvidedKeyInfo instances are not equal. + + The first instance to compare. + The second instance to compare. + True if they're not equal, false otherwise. + + + + Checks if two CustomerProvidedKeyInfo are equal to each other. + + The other instance to compare to. + + + + + ToString + + string + + + + The result of BlobBaseClient.GetTags() call. + + + + + Blob Tags. + + + + + Contains Object Replication Policy ID and the respective list of + (s). This is used when retrieving the + Object Replication Properties on the source blob. The policy id for the + destination blob is set in ObjectReplicationDestinationPolicyId of the respective + method responses. (e.g. , + ). + + + + + The Object Replication Policy ID. + + + + + The Rule ID(s) and respective Replication Status(s) that are under + the Policy ID. + + + + + Contains the Object Replication Rule ID and Replication Status( + ) of a blob. + There can be more than one under a + . Object Replication Rule IDs + + + + + The Object Replication Rule ID. + + + + + The Replication Status. See . + + + + + Specifies the Replication Status of a blob. This is used when a storage account + has Object Replication Policy(s) applied. See + and . + + + + + Object Replication to the + destination completed. + + + + + Object Replication to the + destination container failed. + + + + + Optional parameters for creating an Page Blob. + + + + + Optional user-controlled value that you can use to track requests. + The value of the SequenceNumber must be between + 0 and 2^63 - 1. The default value is 0. + + + + + Optional standard HTTP header properties that can be set for the + new page blob. + + + + + Optional to add + conditions on the creation of this new page blob. + + + + + Optional custom metadata to set for this page blob. + + + + + Options tags to set for this append blob. + + + + + Optional parameters for Page Blob Open Write. + + + + + The size of the buffer to use. Default is 4 MB, + max is 4 MB. Must be a increment of 512. See . + + + + + Access conditions used to open the write stream. + + + + + Optional to provide + progress updates about data transfers. + + + + + Required if overwrite is set to true, or the underlying + Page Blob is being created for the first time. + Specifies the size of the new Page Blob. + + + + + Specifies page blob specific access conditions. + + + + + IfSequenceNumberLessThan ensures that the page blob operation + succeeds only if the blob's sequence number is less than a value. + + + + + IfSequenceNumberLessThanOrEqual ensures that the page blob + operation succeeds only if the blob's sequence number is less than + or equal to a value. + + + + + IfSequenceNumberEqual ensures that the page blob operation + succeeds only if the blob's sequence number is equal to a value. + + + + + Collect any request conditions. Conditions should be separated by + a semicolon. + + The collected conditions. + + + + Contains blob page range information returned from the PageBlobClient.GetPageRanges operations. + + + + + 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. + + + + + 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. + + + + + The size of the blob in bytes. + + + + + Page ranges for the blob. + + + + + Clear ranges for the blob. + + + + + Creates a new PageRangesInfo instance + + + + + Provides the version state of a successfully released blob or container + object. + + + + + 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. + + + + + Returns the date and time the object was last modified. Any + operation that modifies the blob or container, including an update + of the object's metadata or properties, changes the last-modified + time of the object. + + + + + Creates a new . + + + The contains a value that you can use to perform + operations conditionally. + + + The date and time the object was last modified. + + + + + Creates a new . + + A released . + + + + Creates a new . + + A released . + + + + Creates a string representation of a + . + + + + + Check if two instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + Get a hash code for the . + + Hash code for the . + + + + Blob info from a FindBlobsByTags. + + + + + Blob Name. + + + + + Container Name. + + + + + Blob Tags. + + + + + Prevent direct instantiation of FilterBlobItem instances. + You can use BlobsModelFactory.FilterBlobItem instead. + + + + + Quick Query extensions. + + + + + contains the list of + permissions that can be set for a blob account's access policy. Use + + to set the permissions on the . + + + + + Indicates that Read is permitted. + + + + + Indicates that Add is permitted. + + + + + Indicates that Create is permitted. + + + + + Indicates that Write is permitted. + + + + + Indicates that Delete is permitted. + + + + + Indicates that List is permitted. + + + + + Indicates that all permissions are set. + + + + + contains the list of + permissions that can be set for a blob's access policy. Use + + to set the permissions on the . + + + + + Indicates that Read is permitted. + + + + + Indicates that Add is permitted. + + + + + Indicates that Create is permitted. + + + + + Indicates that Write is permitted. + + + + + Indicates that Delete is permitted. + + + + + Indicates that List is permitted. + + + + + Indicates that reading and writing Tags are permitted. + + + + + Indicates that deleting a Blob Version is permitted. + + + + + Indicates that Move is permitted. + + + + + Indicates that Execute is permitted. + + + + + Indicates that all permissions are set. + + + + + is used to generate a Shared Access + Signature (SAS) for an Azure Storage container or blob. + For more information, see + + Create a service SAS. + + + + + The storage service version to use to authenticate requests made + with this shared access signature, and the service version to use + when handling requests made with this shared access signature. + + + This property has been deprecated and we will always use the latest + storage SAS version of the Storage service supported. This change + does not have any impact on how your application generates or makes + use of SAS tokens. + + + + + The optional signed protocol field specifies the protocol + permitted for a request made with the SAS. Possible values are + , + , and + . + + + + + Optionally specify the time at which the shared access signature + becomes valid. If omitted when DateTimeOffset.MinValue is used, + start time for this call is assumed to be the time when the + storage service receives the request. + + + + + The time at which the shared access signature becomes invalid. + This field must be omitted if it has been specified in an + associated stored access policy. + + + + + The permissions associated with the shared access signature. The + user is restricted to operations allowed by the permissions. This + field must be omitted if it has been specified in an associated + stored access policy. The , + , , + or can be used to create the + permissions string. + + + + + Specifies an IP address or a range of IP addresses from which to + accept requests. If the IP address from which the request + originates does not match the IP address or address range + specified on the SAS token, the request is not authenticated. + When specifying a range of IP addresses, note that the range is + inclusive. + + + + + An optional unique value up to 64 characters in length that + correlates to an access policy specified for the container. + + + + + The name of the blob container being made accessible. + + + + + The name of the blob being made accessible, or + for a container SAS. + + + + + The name of the snapshot being made accessible, or + for a blob SAS. + + + + + The name of the blob version being made accessible, or + for a blob SAS. + + + + + Specifies which resources are accessible via the shared access + signature. + + Specify "b" if the shared resource is a blob. This grants access to + the content and metadata of the blob. + + Specify "c" if the shared resource is a blob container. This grants + access to the content and metadata of any blob in the container, + and to the list of blobs in the container. + + Beginning in version 2018-11-09, specify "bs" if the shared resource + is a blob snapshot. This grants access to the content and + metadata of the specific snapshot, but not the corresponding root + blob. + + Beginning in version 2019-12-12, specify "bv" if the shared resource + is a blob version. This grants access to the content and + metadata of the specific version, but not the corresponding root + blob. + + + + + Override the value returned for Cache-Control response header. + + + + + Override the value returned for Content-Disposition response + header. + + + + + Override the value returned for Cache-Encoding response header. + + + + + Override the value returned for Cache-Language response header. + + + + + Override the value returned for Cache-Type response header. + + + + + Optional. Beginning in version 2020-02-10, this value will be used for + the AAD Object ID of a user authorized by the owner of the + User Delegation Key to perform the action granted by the SAS. + The Azure Storage service will ensure that the owner of the + user delegation key has the required permissions before granting access. + No additional permission check for the user specified in this value will be performed. + This is only used with generating User Delegation SAS. + + + + + Optional. Beginning in version 2020-02-10, this value will be used for + to correlate the storage audit logs with the audit logs used by the + principal generating and distributing SAS. This is only used for + User Delegation SAS. + + + + + Initializes a new instance of the + class. + + + This constructor has been deprecated. Please consider using + + to create a Service SAS. This change does not have any impact on how + your application generates or makes use of SAS tokens. + + + + + Initializes a new instance of the + class to create a Blob Service Sas. + + + The time at which the shared access signature becomes invalid. + This field must be omitted if it has been specified in an + associated stored access policy. + + + The time at which the shared access signature becomes invalid. + This field must be omitted if it has been specified in an + associated stored access policy. + + + + + Initializes a new instance of the + class to create a Blob Container Service Sas. + + + The time at which the shared access signature becomes invalid. + This field must be omitted if it has been specified in an + associated stored access policy. + + + The time at which the shared access signature becomes invalid. + This field must be omitted if it has been specified in an + associated stored access policy. + + + + + Sets the permissions for a blob SAS. + + + containing the allowed permissions. + + + + + Sets the permissions for a blob account level SAS. + + + containing the allowed permissions. + + + + + Sets the permissions for a blob container SAS. + + + containing the allowed permissions. + + + + + Sets the permissions for a Snapshot SAS. + + + containing the allowed permissions. + + + + + Sets the permissions for a Version SAS. + + + containing the allowed permissions. + + + + + Sets the permissions for the SAS using a raw permissions string. + + + Raw permissions string for the SAS. + + + If the permissions should be validated and correctly ordered. + + + + + Sets the permissions for the SAS using a raw permissions string. + + Raw permissions string for the SAS. + + + + Use an account's to sign this + shared access signature values to produce the proper SAS query + parameters for authenticating requests. + + + The storage account's . + + + The used for authenticating + requests. + + + + + Use an account's to sign this + shared access signature values to produce the proper SAS query + parameters for authenticating requests. + + + A returned from + . + + The name of the storage account. + + The used for authenticating requests. + + + + + Returns a string that represents the current object. + + A string that represents the current object. + + + + Check if two BlobSasBuilder instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + Get a hash code for the BlobSasBuilder. + + Hash code for the BlobSasBuilder. + + + + contains the list of + permissions that can be set for a blob's access policy. Use + + to set the permissions on the . + + + + + Indicates that Read is permitted. + + + + + Indicates that Add is permitted. + + + + + Indicates that Create is permitted. + + + + + Indicates that Write is permitted. + + + + + Indicates that Delete is permitted. + + + + + Indicates that reading and writing Tags are permitted. + + + + + Indicates that deleting a Blob Version is permitted. + + + + + Indicates that List is permitted. + + + + + Indicates that Move is permitted. + + + + + Indicates that Execute is permitted. + + + + + Indicates that all permissions are set. + + + + + A object represents the components + that make up an Azure Storage Shared Access Signature's query + parameters. You can construct a new instance using + . + + For more information, + + Create a service SAS. + + + + + Gets the Azure Active Directory object ID in GUID format. + + + + + Gets the Azure Active Directory tenant ID in GUID format + + + + + Gets the time at which the key becomes valid. + + + + + Gets the time at which the key becomes expires. + + + + + Gets the Storage service that accepts the key. + + + + + Gets the Storage service version that created the key. + + + + + Gets empty shared access signature query parameters. + + + + + Creates a new BlobSasQueryParameters instance. + + + + + Creates a new instance of the + type based on the supplied query parameters . + All SAS-related query parameters will be removed from + . + + URI query parameters + + + + Convert the SAS query parameters into a URL encoded query string. + + + A URL encoded query string representing the SAS. + + + + + contains the list of + permissions that can be set for a blob bersion. Use + + to set the permissions on the . + + + + + Indicates that Delete is permitted. + + + + + Indicates that all permissions are set. + + + + + Parses the key properties into the QueryParameters instance. + + + The BlobSasQueryParameters or DataLakeSasQueryParameters instance. + + + Dictionary of keys and values. + + + + + contains the list of + permissions that can be set for a blob's access policy. Use + + to set the permissions on the . + + + + + Indicates that Read is permitted. + + + + + Indicates that Write is permitted. + + + + + Indicates that Delete is permitted. + + + + + Indicates that all permissions are set. + + + + + Extension methods for Sas. + + + + + Creates a string representing which resource types are allowed + for . + + + A string representing which resource types are allowed. + + + The order here matches the order used by the portal when generating SAS signatures. + + + + + Parse a string representing which resource types are accessible + from a shared access signature. + + + A string representing which resource types are accessible. + + + An instance. + + + The order here matches the order used by the portal when generating SAS signatures. + + + + + Gets a string representation of the protocol. + + A string representation of the protocol. + + + + Parse a string representation of a protocol. + + A string representation of a protocol. + A . + + + + Creates a string representing which services can be used for + . + + + A string representing which services are allowed. + + + The order here matches the order used by the portal when generating SAS signatures. + + + + + Parse a string representing which services are accessible from a + shared access signature. + + + A string representing which services are accessible. + + + An instance. + + + + + FormatTimesForSASSigning converts a time.Time to a snapshotTimeFormat string suitable for a + SASField's StartTime or ExpiryTime fields. Returns "" if value.IsZero(). + + + + + + + Helper method to add query param key value pairs to StringBuilder + + StringBuilder instance + query key + query value + + + + Helper to access protected static members of SasQueryParameters. + + + + + Encapsulates the shared properties used by both + BlobSasQueryParameters and DataLakeSasQueryParameters. + + + + + Builds up the UserDelegationKey portion of the SAS query parameter string. + + + + + Decrypts the given stream if decryption information is provided. + Does not shave off unwanted start/end bytes, but will shave off padding. + + Stream to decrypt. + + Encryption metadata and wrapped content encryption key. + + + Whether to use the first block of the stream for the IV instead of the value in + . Generally for partial blob downloads where the + previous block of the ciphertext is the IV for the next. + + + Whether to ignore padding. Generally for partial blob downloads where the end of + the blob (where the padding occurs) was not downloaded. + + Whether to perform this function asynchronously. + + + Decrypted plaintext. + + + Exceptions thrown based on implementations of and + . + + + + + Extension method to clone an instance of . + + + + + + + Copies all properties from one instance to another. It cannot copy + ; + that is the responsibility of the caller who made the instance. + + Object to copy from. + Object to copy to. + + This functionality has been pulled out to be accessible by other + clone methods available on subclasses. They need the ability to + instantiate the subclass destination first before copying over the + properties. + + + + + Specifies the encryption algorithm used to encrypt and decrypt a blob. + + + + + Initializes a new instance of the structure. + + The string value of the instance. + + + + AES-CBC using a 256 bit key. + + + + + Determines if two values are the same. + + The first to compare. + The second to compare. + True if and are the same; otherwise, false. + + + + Determines if two values are different. + + The first to compare. + The second to compare. + True if and are different; otherwise, false. + + + + Converts a string to a . + + The string value to convert. + + + Indicates whether this instance and a specified object are equal.The object to compare with the current instance. if and this instance are the same type and represent the same value; otherwise, . + + + + + + Returns the hash code for this instance.A 32-bit signed integer that is the hash code for this instance. + + + Returns the fully qualified type name of this instance.The fully qualified type name. + + + + Represents the encryption agent stored on the service. + + + + + The protocol version used for encryption. + + + + + The algorithm used for encryption. + + + + + Represents the encryption data that is stored on the service. + + + + + The blob encryption mode. + + + + + A object that stores the wrapping algorithm, key identifier and the encrypted key. + + + + + The encryption agent. + + + + + The content encryption IV. + + + + + Metadata for encryption. Currently used only for storing the encryption library, but may contain other data. + + + + + Serializes an EncryptionData instance into JSON. + + Data to serialize. + The JSON string. + + + + Serializes an EncryptionData instance into JSON and writes it to the given JSON writer. + + The writer to write the serialization to. + Data to serialize. + + + + Deserializes an EncryptionData instance from JSON. + + The serialized data string. + The instance. + + + + Reads an EncryptionData instance from a JSON reader. + + The reader to parse an EncryptionData isntance from. + The instance. + + + + Reads an EncryptionData instance from a parsed JSON object. + + The JSON object model. + The instance. + + + + Represents the envelope key details JSON schema stored on the service. + In the envelope technique, a securely generated content encryption key (CEK) is generated + for every encryption operation. It is then encrypted (wrapped) with the user-provided key + encryption key (KEK), using a key-wrap algorithm. The wrapped CEK is stored with the + encrypted data, and needs the KEK to be unwrapped. The KEK and key-wrapping operation is + never seen by this SDK. + + + + + The key identifier string. + + + + + The encrypted content encryption key. + + + + + The algorithm used to wrap the content encryption key. + + + + + Wraps the given read-stream in a CryptoStream and provides the metadata used to create + that stream. + + Stream to wrap. + Whether to wrap the content encryption key asynchronously. + Cancellation token. + The wrapped stream to read from and the encryption metadata for the wrapped stream. + + + + Encrypts the given stream and provides the metadata used to encrypt. This method writes to a memory stream, + optimized for known-size data that will already be buffered in memory. + + Stream to encrypt. + Whether to wrap the content encryption key asynchronously. + Cancellation token. + The encrypted data and the encryption metadata for the wrapped stream. + + + + An accumulator for request and response data transfers. + + + + + Increments the current value and reports it to the progress handler + + + + + + Zeroes out the current accumulation, and reports it to the progress handler + + + + + Returns an instance that no-ops accumulation. + + + + + Returns a long instance representing the current progress value. + + + + + The maximum allowed time between read or write calls to the stream for IdleCancellingStream. + + + + + Gets the default service version to use when building shared access + signatures. + + + + + The default size of staged blocks when uploading small blobs. + + + + + The size of staged blocks when uploading large blobs. + + + + + The threshold where we switch from staging + buffers to staging buffers. + + + + + The minimum number of bytes to download in Open Read. + + + + + Different .NET implementations have different default sizes for + and it's overloads. This is the default for .NET Core to be applied everywhere for test consistency. + + + + + The size of the buffer to use when copying streams during a + download operation. + + + + + The default format we use for block names. There are 50,000 + maximum blocks so we pad the size with up to 4 leading zeros. + + + + + Storage Connection String constant values. + + + + + The default port numbers for development storage credentials + + + + + Header Name constant values. + + + + + Blob constant values. + + + + + The Azure Storage name used to identify a storage account's root container. + + + + + The Azure Storage name used to identify a storage account's logs container. + + + + + The Azure Storage name used to identify a storage account's web content container. + + + + + Lease Duration is set as infinite when passed -1. + + + + + File constant values. + + + + + Lease Duration is set as infinite when passed -1. + + + + + Data Lake constant values. + + + + + The blob URI suffix. + + + + + The DFS URI suffix. + + + + + The key of the object json object returned for errors. + + + + + The key of the error code returned for errors. + + + + + The key of the error message returned for errors. + + + + + The Azure Storage error codes for Datalake Client. + + + + + Default concurrent transfers count. + + + + + Max upload bytes for less than Service Version 2019-12-12. + + + + + Max upload bytes. + + + + + Metadata key for isFolder property. + + + + + Queue constant values. + + + + + QueueMaxMessagesDequeue indicates the maximum number of messages + you can retrieve with each call to Dequeue. + + + + + QueueMessageMaxBytes indicates the maximum number of bytes allowed for a message's UTF-8 text. + + + + + ChangeFeed constant values. + + + + + Quick Query constant values. + + + + + Sas constant values. + + + + + List of ports used for path style addressing. + Copied from Microsoft.Azure.Storage.Core.Util + + + + + XML Element Name constant values. + + + + + Create exceptions for common error cases. + + + + + This policy is used if the SecondaryUri property is passed in on the clientOptions. It allows for storage + accounts configured with RA-GRS to retry GET or HEAD requests against the secondary storage Uri. + + + + + Functions like a readable but uses an ArrayPool to supply the backing memory. + This stream support buffering long sizes. + + + + + Size to rent from MemoryPool. + + + + + The backing array pool. + + + + + Absolute position of this stream in the larger stream it was chunked from. + + + + + Parameterless constructor for mocking. + + + + + Buffers a portion of the given stream, returning the buffered stream partition. + + + Stream to buffer from. + + + Minimum number of bytes to buffer. This method will not return until at least this many bytes have been read from or the stream completes. + + + Maximum number of bytes to buffer. + + + Current position of the stream, since throws if not seekable. + + + Pool to rent buffer space from. + + + Max size we can request from the array pool. + + + Whether to perform this operation asynchronously. + + + Cancellation token. + + + The buffered stream partition with memory backed by an array pool. + + + + + Describes a stream that is a partition of another, larger stream. + + + + + Absolute position of the start of this stream in the larger stream it was chunked from. + + + + + Exposes a predetermined slice of a larger stream using the same Stream interface. + There should not be access to the base stream while this facade is in use. + + + + Reads a byte from the stream and advances the position within the stream by one byte, or returns -1 if at the end of the stream.The unsigned byte cast to an , or -1 if at the end of the stream.The stream does not support reading.Methods were called after the stream was closed. + + Implementing this method takes advantage of any optimizations in the wrapped stream's implementation. + + + + + Some streams will throw if you try to access their length so we wrap + the check in a TryGet helper. + + + + + Wraps a stream, and reports position updates to a progress incrementer + + + + + Gets the SAS token used to authenticate requests to the Storage + service. + + + + + Initializes a new instance of the + class. + + + The SAS token used to authenticate requests to the Storage service. + + + + + Defines the client configuration options for connecting to Azure + Storage. + + + + + Set common ClientOptions defaults for Azure Storage. + + Storage ClientOptions. + + + + Get an authentication policy to sign Storage requests. + + Credential to use. + An authentication policy. + + + + Get an authentication policy to sign Storage requests. + + Credential to use. + Resource Uri. Must not contain shared access signature. + An authentication policy. + + + + Get an authentication policy to sign Storage requests. + + Credential to use. + An authentication policy. + + + + Get an optional authentication policy to sign Storage requests. + + Optional credentials to use. + An optional authentication policy. + + + + Create an HttpPipeline from Storage ClientOptions. + + The Storage ClientOptions. + Optional authentication policy. + The secondary URI to be used for retries on failed read requests + An HttpPipeline to use for Storage requests. + + + + Create an HttpPipeline from Storage ClientOptions. + + The Storage ClientOptions. + Optional authentication credentials. + The secondary URI to be used for retries on failed read requests + An HttpPipeline to use for Storage requests. + + + + Gets or sets a value indicating whether the FISMA MD5 setting will be used. + + false to use the FISMA MD5 setting; true to use the .NET default implementation. + + + + Initializes a new instance of the class using the specified + account credentials and service endpoints. + + A StorageCredentials object. + A specifying the Blob service endpoint or endpoints. + A specifying the Queue service endpoint or endpoints. + A specifying the Table service endpoint or endpoints. + A specifying the File service endpoint or endpoints. + + + + Gets a object that references the well-known development storage account. + + A object representing the development storage account. + + + + Indicates whether this account is a development storage account. + + + + + The storage service hostname suffix set by the user, if any. + + + + + The connection string parsed into settings. + + + + + True if the user used a constructor that auto-generates endpoints. + + + + + Gets the primary endpoint for the Blob service, as configured for the storage account. + + A containing the primary Blob service endpoint. + + + + Gets the primary endpoint for the Queue service, as configured for the storage account. + + A containing the primary Queue service endpoint. + + + + Gets the primary endpoint for the Table service, as configured for the storage account. + + A containing the primary Table service endpoint. + + + + Gets the primary endpoint for the File service, as configured for the storage account. + + A containing the primary File service endpoint. + + + + Gets the endpoints for the Blob service at the primary and secondary location, as configured for the storage account. + + A containing the Blob service endpoints. + + + + Gets the endpoints for the Queue service at the primary and secondary location, as configured for the storage account. + + A containing the Queue service endpoints. + + + + Gets the endpoints for the Table service at the primary and secondary location, as configured for the storage account. + + A containing the Table service endpoints. + + + + Gets the endpoints for the File service at the primary and secondary location, as configured for the storage account. + + A containing the File service endpoints. + + + + Gets the credentials used to create this object. + + A StorageCredentials object. + + + + Private record of the account name for use in ToString(bool). + + + + + Parses a connection string and returns a created + from the connection string. + + A valid connection string. + Thrown if is null or empty. + Thrown if is not a valid connection string. + Thrown if cannot be parsed. + A object constructed from the values provided in the connection string. + + + + Indicates whether a connection string can be parsed to return a object. + + The connection string to parse. + A object to hold the instance returned if + the connection string can be parsed. + true if the connection string was successfully parsed; otherwise, false. + + + + Internal implementation of Parse/TryParse. + + The string to parse. + The to return. + A callback for reporting errors. + If true, the parse was successful. Otherwise, false. + + + + Gets the default blob endpoint using the specified protocol and account name. + + The protocol to use. + The name of the storage account. + The Endpoint DNS suffix; use null for default. + The sas token; use null for default. + The default blob endpoint. + + + + Gets the default file endpoint using the specified protocol and account name. + + The protocol to use. + The name of the storage account. + The Endpoint DNS suffix; use null for default. + The sas token; use null for default. + The default file endpoint. + + + + Gets the default queue endpoint using the specified protocol and account name. + + The protocol to use. + The name of the storage account. + The Endpoint DNS suffix; use null for default. + The sas token; use null for default. + The default queue endpoint. + + + + Gets the default queue endpoint using the specified protocol and account name. + + The protocol to use. + The name of the storage account. + The Endpoint DNS suffix; use null for default. + The sas token; use null for default. + The default table endpoint. + + + + Provide helpful information about errors calling Azure Storage endpoints. + + + + + Attempt to get the error code from a response if it's not provided. + + The response. + An optional error code. + The response's error code. + + + + Check if a Response will throw an exception if you try to access + its Value property. + + Type of the Response Value. + The response to check. + True if the response will throw. + + + + Create a response that will throw an exception if you try to access + its Value property. + + Type of the Response Value. + The raw response. + A response that will throw if accessed. + + + + Pipeline policy to verify x-ms-client-request-id and x-ms-client-return-request-id + headers that are echoed back from a request match. + + + + + Create a new StorageRequestValidationPipelinePolicy + + + + + Verify x-ms-client-request-id and x-ms-client-return-request-id headers matches as + x-ms-client-return-request-id is an echo of x-mis-client-request-id. + + The message that was sent + + + + This class is added to access protected static methods off of the base class + that should not be exposed directly to customers. + + + + + HttpPipelinePolicy to sign requests using an Azure Storage shared key. + + + + + Create a new SharedKeyPipelinePolicy + + SharedKeyCredentials to authenticate requests. + + + + Sign the request using the shared key credentials. + + The message with the request to sign. + + + + The secondary URI to be used for retries on failed read requests + + + + + Overridden version of IsRetriableResponse that allows for Storage specific retry logic. + + The message containing both Response and Request + + + + + Helpers to manage Storage service versions. + + + + + Gets the latest version of the service supported by this SDK. + + + + + Convert a Storage ServiceVersion enum to an x-ms-version string. + + The service version enum value. + The x-ms-version string. + + + + Extension methods used to manipulate URIs. + + + + + Append a segment to a URIs path. + + The URI. + The relative segment to append. + The combined URI. + + + + Get the (already encoded) query parameters on a URI. + + The URI. + Dictionary mapping query parameters to values. + + + + Get the account name from the domain portion of a Uri. + + The Uri. + The service subdomain used to validate that the + domain is in the expected format. This should be "blob" for blobs, "file" for files, + "queue" for queues, "blob" and "dfs" for datalake. + Account name or null if not able to be parsed. + + + + Get the account name from the host. + + Host. + The service subdomain used to validate that the + domain is in the expected format. This should be "blob" for blobs, "file" for files, + "queue" for queues, "blob" and "dfs" for datalake. + Account name or null if not able to be parsed. + + + + If path starts with a slash, remove it + + The Uri. + Sanitized Uri. + + + + Check to see if Uri is using IP Endpoint style. + + The Uri. + True if using IP Endpoint style. + + + + Appends a query parameter to the string builder. + + string builder instance. + query parameter key. + query parameter value. + + + + Takes encoded query params string, output decoded params map + + + + + + Used for Open Read APIs. + + + + + Reads a fixed number of bytes from the stream. + The number of bytes to return is the first int read from the stream. + + + Note that in the Avro spec, byte array length is specified as a long. + This is fine for Quick Query and Change Feed, but could become a problem + in the future. + + + + + Returns null. + + + + + Reads a bool from the stream. + + + + + Reads a long from the stream. + + + + + Reads an int from the stream. + + + + + Reads a float from the stream. + + + + + Reads a double from the stream. + + + + + Reads a fixed number of bytes from the stream. + + + + + Reads a string from the stream. + + + + + Reads a map from the stream. + + + + + Adds the select to each element in the array. + + + + + Converts an IEnumerable of KeyValuePair into a Dictionary. + + + + + Parent class of AvroTypes. + + + + + Reads an object from the stream. + + + + + Determinds the AvroType from the Avro Schema. + + + + + AvroPrimativeType. + + + + + AvroEnumType. + + + + + AvroUnionType. + + + + + AvroMapType. + + + + + AvroRecordType. + + + + + The byte offset within the Avro file (both header and data) + of the start of the current block. + + + + + The index of the current object within the current block. + + + + + + Constructor for an AvroReader that will read from the + beginning of an Avro file. + + + + + Constructor for an Avro Reader that will read beginning + in the middle of an Avro file. + + + + + Constructor for mocking. Do not use. + + + + + Wrapper for HttpContentStream that provides the current position. + + + + When overridden in a derived class, gets or sets the position within the current stream.The current position within the stream.An I/O error occurs.The stream does not support seeking.Methods were called after the stream was closed. + + + When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.An array of bytes. When this method returns, the buffer contains the specified byte array with the values between and ( + - 1) replaced by the bytes read from the current source.The zero-based byte offset in at which to begin storing the data read from the current stream.The maximum number of bytes to be read from the current stream.The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.The sum of and is larger than the buffer length. is . or is negative.An I/O error occurs.The stream does not support reading.Methods were called after the stream was closed. + + + When overridden in a derived class, gets a value indicating whether the current stream supports reading. if the stream supports reading; otherwise, . + + + When overridden in a derived class, gets a value indicating whether the current stream supports seeking. if the stream supports seeking; otherwise, . + + + When overridden in a derived class, gets a value indicating whether the current stream supports writing. if the stream supports writing; otherwise, . + + + When overridden in a derived class, gets the length in bytes of the stream.A long value representing the length of the stream in bytes.A class derived from does not support seeking.Methods were called after the stream was closed. + + + When overridden in a derived class, sets the position within the current stream.A byte offset relative to the parameter.A value of type indicating the reference point used to obtain the new position.The new position within the current stream.An I/O error occurs.The stream does not support seeking, such as if the stream is constructed from a pipe or console output.Methods were called after the stream was closed. + + + When overridden in a derived class, sets the length of the current stream.The desired length of the current stream in bytes.An I/O error occurs.The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output.Methods were called after the stream was closed. + + + When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.An array of bytes. This method copies bytes from to the current stream.The zero-based byte offset in at which to begin copying bytes to the current stream.The number of bytes to be written to the current stream.The sum of and is greater than the buffer length. is . or is negative.An I/O error occurred, such as the specified file cannot be found.The stream does not support writing. was called after the stream was closed. + + + When overridden in a derived class, clears all buffers for this stream and causes any buffered data to be written to the underlying device.An I/O error occurs. + + + Releases the unmanaged resources used by the and optionally releases the managed resources. to release both managed and unmanaged resources; to release only unmanaged resources. + + + + Argument validation. + + + This class should be shared via source using Azure.Core.props and contain only common argument validation. + It is declared partial so that you can use the same familiar class name but extend it with project-specific validation. + To extend the functionality of this class, just declare your own partial class with project-specific methods. + + + Be sure to document exceptions thrown by these methods on your public methods. + + + + + + Throws if is null. + + The value to validate. + The name of the parameter. + is null. + + + + Throws if has not been initialized. + + The value to validate. + The name of the parameter. + has not been initialized. + + + + Throws if is null or an empty collection. + + The value to validate. + The name of the parameter. + is an empty collection. + is null. + + + + Throws if is null or an empty string. + + The value to validate. + The name of the parameter. + is an empty string. + is null. + + + + Throws if is null, an empty string, or consists only of white-space characters. + + The value to validate. + The name of the parameter. + is an empty string or consists only of white-space characters. + is null. + + + + Throws if is the default value for type . + + The type of structure to validate which implements . + The value to validate. + The name of the parameter. + is the default value for type . + + + + Throws if is less than the or greater than the . + + The type of to validate which implements . + The value to validate. + The minimum value to compare. + The maximum value to compare. + The name of the parameter. + + + + This attribute should be set on all client assemblies with value of one of the resource providers + from the https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/azure-services-resource-providers list. + + + + + Initializes a new instance of the class. + + The used to authenticate requests. + + + + Method is invoked before the request is sent. + The containing the request. + + + + HACK HACK HACK. Some runtime environments like Azure.Functions downgrade System.Diagnostic.DiagnosticSource package version causing method not found exceptions in customer apps + This type is a temporary workaround to avoid the issue. + + + + + Both and are defined as public structs so that foreach can use duck typing + to call and avoid heap memory allocation. + Please don't delete this method and don't make these types private. + + + + + + Represents a heap-based, array-backed output sink into which data can be written. + + + + + Creates an instance of an , in which data can be written to, + with the default initial capacity. + + + + + Creates an instance of an , in which data can be written to, + with an initial capacity specified. + + The minimum capacity with which to initialize the underlying buffer. + + Thrown when is not positive (i.e. less than or equal to 0). + + + + + Returns the data written to the underlying buffer so far, as a . + + + + + Returns the data written to the underlying buffer so far, as a . + + + + + Returns the amount of data written to the underlying buffer so far. + + + + + Returns the total amount of space within the underlying buffer. + + + + + Returns the amount of space available that can still be written into without forcing the underlying buffer to grow. + + + + + Clears the data written to the underlying buffer. + + + You must clear the before trying to re-use it. + + + + + Notifies that amount of data was written to the output /. + + + Thrown when is negative. + + + Thrown when attempting to advance past the end of the underlying buffer. + + + You must request a new buffer after calling Advance to continue writing more data and cannot write to a previously acquired buffer. + + + + + Returns a to write to that is at least the requested length (specified by ). + If no is provided (or it's equal to 0), some non-empty buffer is returned. + + + Thrown when is negative. + + + This will never return an empty . + + + There is no guarantee that successive calls will return the same buffer or the same-sized buffer. + + + You must request a new buffer after calling Advance to continue writing more data and cannot write to a previously acquired buffer. + + + + + Returns a to write to that is at least the requested length (specified by ). + If no is provided (or it's equal to 0), some non-empty buffer is returned. + + + Thrown when is negative. + + + This will never return an empty . + + + There is no guarantee that successive calls will return the same buffer or the same-sized buffer. + + + You must request a new buffer after calling Advance to continue writing more data and cannot write to a previously acquired buffer. + + + + + Marks methods that call methods on other client and don't need their diagnostics verified + + + + + Copied from https://github.com/dotnet/corefx/blob/master/src/Common/src/CoreLib/System/HashCode.cs. + + + + + Extension methods to add client to clients builder. + + + + + Registers a instance with the provided + + + + + Registers a instance with the provided + + + + + Registers a instance with the provided and + + + + + Registers a instance with connection options loaded from the provided instance. + + + + Returns an enumerator that iterates through the collection.An enumerator that can be used to iterate through the collection. + + + Returns an enumerator that iterates through a collection.An object that can be used to iterate through the collection. + + + Gets the element in the collection at the current position of the enumerator.The element in the collection at the current position of the enumerator. + + + diff --git a/app_data/jobs/triggered/utility/Azure.Storage.Common.dll b/app_data/jobs/triggered/utility/Azure.Storage.Common.dll new file mode 100644 index 0000000000000000000000000000000000000000..44a008e944cc3082cff5de19725846fd18d3a2e0 GIT binary patch literal 78224 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 a@9r;p-2ZO%BdU%Y7R~v2$l46Hl=xq9+k{F0 literal 0 HcmV?d00001 diff --git a/app_data/jobs/triggered/utility/Azure.Storage.Common.xml b/app_data/jobs/triggered/utility/Azure.Storage.Common.xml new file mode 100644 index 000000000..f5ac4b48f --- /dev/null +++ b/app_data/jobs/triggered/utility/Azure.Storage.Common.xml @@ -0,0 +1,1442 @@ + + + + Azure.Storage.Common + + + + + Provides the client configuration options for connecting to Azure Blob using clientside encryption. + + + + + The version of clientside encryption to use. + + + + + Required for upload operations. + The key used to wrap the generated content encryption key. + For more information, see https://docs.microsoft.com/en-us/azure/storage/common/storage-client-side-encryption. + + + + + Required for download operations. + Fetches the correct key encryption key to unwrap the downloaded content encryption key. + For more information, see https://docs.microsoft.com/en-us/azure/storage/common/storage-client-side-encryption. + + + + + Required for upload operations. + The algorithm identifier to use when wrapping the content encryption key. This is passed into + + and its async counterpart. + + + + + Initializes a new instance of the class. + + The version of clientside encryption to use. + + + + The version of clientside encryption to use. + + + + + 1.0 + + + + + is used to generate an account level + Shared Access Signature (SAS) for Azure Storage services. + For more information, see + + Create an account SAS. + + + + + The storage service version to use to authenticate requests made + with this shared access signature, and the service version to use + when handling requests made with this shared access signature. + + + + + The optional signed protocol field specifies the protocol + permitted for a request made with the SAS. Possible values are + , + , and + . + + + + + Optionally specify the time at which the shared access signature + becomes valid. If omitted when DateTimeOffset.MinValue is used, + start time for this call is assumed to be the time when the + storage service receives the request. + + + + + The time at which the shared access signature becomes invalid. + This field must be omitted if it has been specified in an + associated stored access policy. + + + + + The permissions associated with the shared access signature. The + user is restricted to operations allowed by the permissions. The + type can be used to create the + permissions string. + + + + + Specifies an IP address or a range of IP addresses from which to + accept requests. If the IP address from which the request + originates does not match the IP address or address range + specified on the SAS token, the request is not authenticated. + When specifying a range of IP addresses, note that the range is + inclusive. + + + + + The services associated with the shared access signature. The + user is restricted to operations with the specified services. + + + + + The resource types associated with the shared access signature. The + user is restricted to operations on the specified resources. + + + + + Initializes a new instance of the + class. + + + This constructor has been deprecated. Please consider using + + to create a Service SAS. This change does not have any impact on how + your application generates or makes use of SAS tokens. + + + + + Initializes a new instance of the + class to create a Blob Container Service Sas. + + + The time at which the shared access signature becomes invalid. + This field must be omitted if it has been specified in an + associated stored access policy. + + + The time at which the shared access signature becomes invalid. + This field must be omitted if it has been specified in an + associated stored access policy. + + + Specifies the services accessible from an account level shared access + signature. + + + Specifies the resource types accessible from an account level shared + access signature. + + + + + Sets the permissions for an account SAS. + + + containing the allowed permissions. + + + + + Sets the permissions for the SAS using a raw permissions string. + + Raw permissions string for the SAS. + + + + Use an account's to sign this + shared access signature values to produce the proper SAS query + parameters for authenticating requests. + + + The storage account's . + + + The used for authenticating + requests. + + + + + Returns a string that represents the current object. + + A string that represents the current object. + + + + Check if two instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + Get a hash code for the . + + Hash code for the . + + + + contains the list of + permissions that can be set for a blob's access policy. Use + + to set the permissions on the . + + + + + Indicates that Read is permitted. + + + + + Indicates that Write is permitted. + + + + + Indicates that Delete is permitted. + + + + + Indicates that List is permitted. + + + + + Indicates that Add is permitted. + + + + + Indicates that Create is permitted. + + + + + Indicates that Update is permitted. + + + + + Indicates that Delete is permitted. + + + + + Indicates that reading and writing Tags is permitted. + Blob service only. + + + + + Indicates that filtering by tag is permitted. + Blob service only. + + + + + Indicates that deleting a BlobVersion is permitted. + Blob Service only. + + + + + Indicates that all permissions are set. + + + + + Specifies the resource types accessible from an account level shared + access signature. + + + + + Indicates whether service-level APIs are accessible + from this shared access signature (e.g., Get/Set Service + Properties, Get Service Stats, List Containers/Queues/Tables/ + Shares). + + + + + Indicates whether blob container-level APIs are accessible + from this shared access signature (e.g., Create/Delete Container, + Create/Delete Queue, Create/Delete Table, Create/Delete Share, List + Blobs/Files and Directories). + + + + + Indicates whether object-level APIs for blobs, queue + messages, and files are accessible from this shared access + signature (e.g. Put Blob, Query Entity, Get Messages, Create File, + etc.). + + + + + Indicates all service-level APIs are accessible from this shared + access signature. + + + + + Specifies the services accessible from an account level shared access + signature. + + + + + Indicates whether Azure Blob Storage resources are + accessible from the shared access signature. + + + + + Indicates whether Azure Queue Storage resources are + accessible from the shared access signature. + + + + + Indicates whether Azure File Storage resources are + accessible from the shared access signature. + + + + + Indicates whether Azure Table Storage resources are + accessible from the shared access signature. + + + + + Indicates all services are accessible from the shared + access signature. + + + + + Represents a range of allowed IP addresses for constructing a Shared + Access Signature. + + + + + Gets the start of the IP range. Not specified if equal to null or + . + + + + + Gets the optional end of the IP range. Not specified if equal to + null or . + + + + + Creates a new . + + + The range's start . + + + The range's optional end . + + + + + Creates a string representation of an . + + + A string representation of an . + + + + + Parse an IP range string into a new . + + IP range string to parse. + The parsed . + + + + Check if two instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + Get a hash code for the . + + Hash code for the . + + + + Check if two instances are equal. + + The first instance to compare. + The second instance to compare. + True if they're equal, false otherwise. + + + + Check if two instances are not equal. + + The first instance to compare. + The second instance to compare. + True if they're not equal, false otherwise. + + + + Check if two instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + Defines the protocols permitted for Storage requests made with a shared + access signature. + + + + + No protocol has been specified. If no value is specified, + the service will default to HttpsAndHttp. + + + + + Only requests issued over HTTPS or HTTP will be permitted. + + + + + Only requests issued over HTTPS will be permitted. + + + + + A object represents the components + that make up an Azure Storage Shared Access Signature's query + parameters. It includes components used by all Azure Storage resources + (Blob Containers, Blobs, Files, and Queues). You can construct a new instance + using the service specific SAS builder types. + For more information, + + Create a service SAS. + + + + + The default service version to use for Shared Access Signatures. + + + + + Gets the storage service version to use to authenticate requests + made with this shared access signature, and the service version to + use when handling requests made with this shared access signature. + + + + + Gets the signed services accessible with an account level shared + access signature. + + + + + Gets which resources are accessible via the shared access signature. + + + + + Optional. Specifies the protocol permitted for a request made with + the shared access signature. + + + + + Gets the optional time at which the shared access signature becomes + valid. If omitted, start time for this call is assumed to be the + time when the storage service receives the request. + means not set. + + + + + Gets the time at which the shared access signature becomes invalid. + means not set. + + + + + Gets the optional IP address or a range of IP addresses from which + to accept requests. When specifying a range, note that the range + is inclusive. + + + + + Gets the optional unique value up to 64 characters in length that + correlates to an access policy specified for the blob container, queue, + or share. + + + + + Gets the resources are accessible via the shared access signature. + + + + + Gets the permissions associated with the shared access signature. + The user is restricted to operations allowed by the permissions. + This field must be omitted if it has been specified in an + associated stored access policy. + + + + + Gets the Cache-Control response header, which allows for + specifying the client-side caching to be used for blob and file downloads. + + + + + Gets the Content-Disposition response header, which allows for + specifying the way that the blob or file content can be displayed in the browser. + + + + + Gets the Content-Encoding response header, which allows for specifying + the type of encoding used for blob and file downloads. + + + + + Gets the Content-Language response header, which allows for specifying the + language of the downloaded blob or file content. + + + + + Gets the Content-Type response header, which allows for specifying the + type of the downloaded blob or file content. + + + + + Gets the Authorized AAD Object Id associated with the shared access signature. + The AAD Object ID of a user authorized by the owner of the User Delegation Key + to perform the action granted by the SAS. The Azure Storage service will + ensure that the owner of the user delegation key has the required permissions + before granting access but no additional permission check for the user specified + in this value will be performed. This cannot be used in conjuction with + . + Only valid in an HNS enabled account. If this value is set in an non-HNS enabled + account, an authorization failure will be thrown. + + + + + Gets the Unauthorized AAD Object Id associated with the shared access signature. + The AAD Object Id of a user that is assumed to be unauthorized by the owner of the + User Delegation Key. The Azure Storage Service will perform an additional POSIX ACL + check to determine if the user is authorized to perform the requested operation. + This cannot be used in conjuction with . + Only valid in an HNS enabled account. If this value is set in an non-HNS enabled + account, an authorization failure will be thrown. + + + + + Gets the Correlation Id associated with the shared access signature. This is used to + correlate the storage audit logs with the audit logs used by the principal generating + and distributing SAS. + + + + + Gets the Directory Depth specificed in the canonicalizedresource field of the + string-to-sign. The depth of the directory is the number of directories beneath the + root folder. Required when resource (sr) = d to indicate the depth of the directory. + The value must be a non-negative integer. + + + + + Gets the string-to-sign, a unique string constructed from the + fields that must be verified in order to authenticate the request. + The signature is an HMAC computed over the string-to-sign and key + using the SHA256 algorithm, and then encoded using Base64 encoding. + + + + + Gets empty shared access signature query parameters. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance of the type + based on the supplied query parameters . + All SAS-related query parameters will be removed from + . + + URI query parameters + + + + Creates a new SasQueryParameters instance. + + + + + Creates a new SasQueryParameters instance. + + + + + Creates a new instance of the type + based on the supplied query parameters . + All SAS-related query parameters will be removed from + . + + URI query parameters + + + + Creates a new SasQueryParameters instance. + + + + + Creates a new SasQueryParameters instance. + + + + + Convert the SAS query parameters into a URL encoded query string. + + + A URL encoded query string representing the SAS. + + + + + Builds the query parameter string for the SasQueryParameters instance. + + + StringBuilder instance to add the query params to + + + + + Extension methods for Sas. + + + + + Creates a string representing which resource types are allowed + for . + + + A string representing which resource types are allowed. + + + The order here matches the order used by the portal when generating SAS signatures. + + + + + Parse a string representing which resource types are accessible + from a shared access signature. + + + A string representing which resource types are accessible. + + + An instance. + + + The order here matches the order used by the portal when generating SAS signatures. + + + + + Gets a string representation of the protocol. + + A string representation of the protocol. + + + + Parse a string representation of a protocol. + + A string representation of a protocol. + A . + + + + Creates a string representing which services can be used for + . + + + A string representing which services are allowed. + + + The order here matches the order used by the portal when generating SAS signatures. + + + + + Parse a string representing which services are accessible from a + shared access signature. + + + A string representing which services are accessible. + + + An instance. + + + + + FormatTimesForSASSigning converts a time.Time to a snapshotTimeFormat string suitable for a + SASField's StartTime or ExpiryTime fields. Returns "" if value.IsZero(). + + + + + + + Helper method to add query param key value pairs to StringBuilder + + StringBuilder instance + query key + query value + + + + Helper to access protected static members of SasQueryParameters. + + + + + Blob enum extensions. + + + + + Create a permissions string to provide + . + + A permissions string. + + + + A is a credential backed by + a Storage Account's name and one of its access keys. + + + + + Gets the name of the Storage Account. + + + + + Initializes a new instance of the + class. + + The name of the Storage Account. + A Storage Account access key. + + + + Update the Storage Account's access key. This intended to be used + when you've regenerated your Storage Account's access keys and want + to update long lived clients. + + A Storage Account access key. + + + + Generates a base-64 hash signature string for an HTTP request or + for a SAS. + + The message to sign. + The signed message. + + + + Generates a base-64 hash signature string for an HTTP request or + for a SAS. + + The credential. + The message to sign. + The signed message. + + + + is used to provide options for parallel transfers. + + + + + The maximum length of an transfer in bytes. This property is a backwards-compatible + facade for , which supports long values. Use + for full access of supported values. + + + + + The maximum length of an transfer in bytes. + + + + + The maximum number of workers that may be used in a parallel transfer. + + + + + The size of the first range request in bytes. Blobs smaller than this limit will + be downloaded in a single request. Blobs larger than this limit will continue being + downloaded in chunks of size . This property is a + backwards-compatible facade for , which supports + long values. Use for full access of supported values. + + + + + The size of the first range request in bytes. Blobs smaller than this limit will + be downloaded in a single request. Blobs larger than this limit will continue being + downloaded in chunks of size . + + + + + Check if two ParallelTransferOptions instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + Get a hash code for the ParallelTransferOptions. + + Hash code for the ParallelTransferOptions. + + + + Check if two ParallelTransferOptions instances are equal. + + The first instance to compare. + The second instance to compare. + True if they're equal, false otherwise. + + + + Check if two ParallelTransferOptions instances are equal. + + The first instance to compare. + The second instance to compare. + True if they're not equal, false otherwise. + + + + Check if two ParallelTransferOptions instances are equal. + + The instance to compare to. + True if they're equal, false otherwise. + + + + The maximum allowed time between read or write calls to the stream for IdleCancellingStream. + + + + + Gets the default service version to use when building shared access + signatures. + + + + + The default size of staged blocks when uploading small blobs. + + + + + The size of staged blocks when uploading large blobs. + + + + + The threshold where we switch from staging + buffers to staging buffers. + + + + + The minimum number of bytes to download in Open Read. + + + + + Different .NET implementations have different default sizes for + and it's overloads. This is the default for .NET Core to be applied everywhere for test consistency. + + + + + The size of the buffer to use when copying streams during a + download operation. + + + + + The default format we use for block names. There are 50,000 + maximum blocks so we pad the size with up to 4 leading zeros. + + + + + Storage Connection String constant values. + + + + + The default port numbers for development storage credentials + + + + + Header Name constant values. + + + + + Blob constant values. + + + + + The Azure Storage name used to identify a storage account's root container. + + + + + The Azure Storage name used to identify a storage account's logs container. + + + + + The Azure Storage name used to identify a storage account's web content container. + + + + + Lease Duration is set as infinite when passed -1. + + + + + File constant values. + + + + + Lease Duration is set as infinite when passed -1. + + + + + Data Lake constant values. + + + + + The blob URI suffix. + + + + + The DFS URI suffix. + + + + + The key of the object json object returned for errors. + + + + + The key of the error code returned for errors. + + + + + The key of the error message returned for errors. + + + + + The Azure Storage error codes for Datalake Client. + + + + + Default concurrent transfers count. + + + + + Max upload bytes for less than Service Version 2019-12-12. + + + + + Max upload bytes. + + + + + Metadata key for isFolder property. + + + + + Queue constant values. + + + + + QueueMaxMessagesDequeue indicates the maximum number of messages + you can retrieve with each call to Dequeue. + + + + + QueueMessageMaxBytes indicates the maximum number of bytes allowed for a message's UTF-8 text. + + + + + ChangeFeed constant values. + + + + + Quick Query constant values. + + + + + Sas constant values. + + + + + List of ports used for path style addressing. + Copied from Microsoft.Azure.Storage.Core.Util + + + + + XML Element Name constant values. + + + + + Create exceptions for common error cases. + + + + + This policy is used if the SecondaryUri property is passed in on the clientOptions. It allows for storage + accounts configured with RA-GRS to retry GET or HEAD requests against the secondary storage Uri. + + + + + Gets the SAS token used to authenticate requests to the Storage + service. + + + + + Initializes a new instance of the + class. + + + The SAS token used to authenticate requests to the Storage service. + + + + + Provide helpful information about errors calling Azure Storage endpoints. + + + + + Attempt to get the error code from a response if it's not provided. + + The response. + An optional error code. + The response's error code. + + + + Check if a Response will throw an exception if you try to access + its Value property. + + Type of the Response Value. + The response to check. + True if the response will throw. + + + + Create a response that will throw an exception if you try to access + its Value property. + + Type of the Response Value. + The raw response. + A response that will throw if accessed. + + + + Gets or sets a value indicating whether the FISMA MD5 setting will be used. + + false to use the FISMA MD5 setting; true to use the .NET default implementation. + + + + Initializes a new instance of the class using the specified + account credentials and service endpoints. + + A StorageCredentials object. + A specifying the Blob service endpoint or endpoints. + A specifying the Queue service endpoint or endpoints. + A specifying the Table service endpoint or endpoints. + A specifying the File service endpoint or endpoints. + + + + Gets a object that references the well-known development storage account. + + A object representing the development storage account. + + + + Indicates whether this account is a development storage account. + + + + + The storage service hostname suffix set by the user, if any. + + + + + The connection string parsed into settings. + + + + + True if the user used a constructor that auto-generates endpoints. + + + + + Gets the primary endpoint for the Blob service, as configured for the storage account. + + A containing the primary Blob service endpoint. + + + + Gets the primary endpoint for the Queue service, as configured for the storage account. + + A containing the primary Queue service endpoint. + + + + Gets the primary endpoint for the Table service, as configured for the storage account. + + A containing the primary Table service endpoint. + + + + Gets the primary endpoint for the File service, as configured for the storage account. + + A containing the primary File service endpoint. + + + + Gets the endpoints for the Blob service at the primary and secondary location, as configured for the storage account. + + A containing the Blob service endpoints. + + + + Gets the endpoints for the Queue service at the primary and secondary location, as configured for the storage account. + + A containing the Queue service endpoints. + + + + Gets the endpoints for the Table service at the primary and secondary location, as configured for the storage account. + + A containing the Table service endpoints. + + + + Gets the endpoints for the File service at the primary and secondary location, as configured for the storage account. + + A containing the File service endpoints. + + + + Gets the credentials used to create this object. + + A StorageCredentials object. + + + + Private record of the account name for use in ToString(bool). + + + + + Parses a connection string and returns a created + from the connection string. + + A valid connection string. + Thrown if is null or empty. + Thrown if is not a valid connection string. + Thrown if cannot be parsed. + A object constructed from the values provided in the connection string. + + + + Indicates whether a connection string can be parsed to return a object. + + The connection string to parse. + A object to hold the instance returned if + the connection string can be parsed. + true if the connection string was successfully parsed; otherwise, false. + + + + Internal implementation of Parse/TryParse. + + The string to parse. + The to return. + A callback for reporting errors. + If true, the parse was successful. Otherwise, false. + + + + Gets the default blob endpoint using the specified protocol and account name. + + The protocol to use. + The name of the storage account. + The Endpoint DNS suffix; use null for default. + The sas token; use null for default. + The default blob endpoint. + + + + Gets the default file endpoint using the specified protocol and account name. + + The protocol to use. + The name of the storage account. + The Endpoint DNS suffix; use null for default. + The sas token; use null for default. + The default file endpoint. + + + + Gets the default queue endpoint using the specified protocol and account name. + + The protocol to use. + The name of the storage account. + The Endpoint DNS suffix; use null for default. + The sas token; use null for default. + The default queue endpoint. + + + + Gets the default queue endpoint using the specified protocol and account name. + + The protocol to use. + The name of the storage account. + The Endpoint DNS suffix; use null for default. + The sas token; use null for default. + The default table endpoint. + + + + The secondary URI to be used for retries on failed read requests + + + + + Overridden version of IsRetriableResponse that allows for Storage specific retry logic. + + The message containing both Response and Request + + + + + This class is added to access protected static methods off of the base class + that should not be exposed directly to customers. + + + + + HttpPipelinePolicy to sign requests using an Azure Storage shared key. + + + + + Create a new SharedKeyPipelinePolicy + + SharedKeyCredentials to authenticate requests. + + + + Sign the request using the shared key credentials. + + The message with the request to sign. + + + + Extension methods used to manipulate URIs. + + + + + Append a segment to a URIs path. + + The URI. + The relative segment to append. + The combined URI. + + + + Get the (already encoded) query parameters on a URI. + + The URI. + Dictionary mapping query parameters to values. + + + + Get the account name from the domain portion of a Uri. + + The Uri. + The service subdomain used to validate that the + domain is in the expected format. This should be "blob" for blobs, "file" for files, + "queue" for queues, "blob" and "dfs" for datalake. + Account name or null if not able to be parsed. + + + + Get the account name from the host. + + Host. + The service subdomain used to validate that the + domain is in the expected format. This should be "blob" for blobs, "file" for files, + "queue" for queues, "blob" and "dfs" for datalake. + Account name or null if not able to be parsed. + + + + If path starts with a slash, remove it + + The Uri. + Sanitized Uri. + + + + Check to see if Uri is using IP Endpoint style. + + The Uri. + True if using IP Endpoint style. + + + + Appends a query parameter to the string builder. + + string builder instance. + query parameter key. + query parameter value. + + + + Takes encoded query params string, output decoded params map + + + + + + Both and are defined as public structs so that foreach can use duck typing + to call and avoid heap memory allocation. + Please don't delete this method and don't make these types private. + + + + + Returns an enumerator that iterates through the collection.An enumerator that can be used to iterate through the collection. + + + Returns an enumerator that iterates through a collection.An object that can be used to iterate through the collection. + + + Gets the element in the collection at the current position of the enumerator.The element in the collection at the current position of the enumerator. + + + diff --git a/app_data/jobs/triggered/utility/CoreBlobMigration.exe b/app_data/jobs/triggered/utility/CoreBlobMigration.exe new file mode 100644 index 0000000000000000000000000000000000000000..a07ace039e1c92e5f1f63e88b88db13f3570528c GIT binary patch literal 44544 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 literal 0 HcmV?d00001 diff --git a/app_data/jobs/triggered/utility/CoreBlobMigration.exe.config b/app_data/jobs/triggered/utility/CoreBlobMigration.exe.config new file mode 100644 index 000000000..a58f91b4e --- /dev/null +++ b/app_data/jobs/triggered/utility/CoreBlobMigration.exe.config @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app_data/jobs/triggered/utility/CoreBlobMigration.pdb b/app_data/jobs/triggered/utility/CoreBlobMigration.pdb new file mode 100644 index 0000000000000000000000000000000000000000..316d2eded2a1b26bc3894c5304255a3689a7e372 GIT binary patch literal 140800 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 + + + Microsoft.Bcl.AsyncInterfaces + + + +

Provides the core logic for implementing a manual-reset or . + + + + + The callback to invoke when the operation completes if was called before the operation completed, + or if the operation completed before a callback was supplied, + or null if a callback hasn't yet been provided and the operation hasn't yet completed. + + + + State to pass to . + + + to flow to the callback, or null if no flowing is required. + + + + A "captured" or with which to invoke the callback, + or null if no special context is required. + + + + Whether the current operation has completed. + + + The result with which the operation succeeded, or the default value if it hasn't yet completed or failed. + + + The exception with which the operation failed, or null if it hasn't yet completed or completed successfully. + + + The current version of this value, used to help prevent misuse. + + + Gets or sets whether to force continuations to run asynchronously. + Continuations may run asynchronously if this is false, but they'll never run synchronously if this is true. + + + Resets to prepare for the next operation. + + + Completes with a successful result. + The result. + + + Complets with an error. + + + + Gets the operation version. + + + Gets the status of the operation. + Opaque value that was provided to the 's constructor. + + + Gets the result of the operation. + Opaque value that was provided to the 's constructor. + + + Schedules the continuation action for this operation. + The continuation to invoke when the operation has completed. + The state object to pass to when it's invoked. + Opaque value that was provided to the 's constructor. + The flags describing the behavior of the continuation. + + + Ensures that the specified token matches the current version. + The token supplied by . + + + Signals that the operation has completed. Invoked after the result or error has been set. + + + + Invokes the continuation with the appropriate captured context / scheduler. + This assumes that if is not null we're already + running within that . + + + + Provides a set of static methods for configuring -related behaviors on asynchronous enumerables and disposables. + + + Configures how awaits on the tasks returned from an async disposable will be performed. + The source async disposable. + Whether to capture and marshal back to the current context. + The configured async disposable. + + + Configures how awaits on the tasks returned from an async iteration will be performed. + The type of the objects being iterated. + The source enumerable being iterated. + Whether to capture and marshal back to the current context. + The configured enumerable. + + + Sets the to be passed to when iterating. + The type of the objects being iterated. + The source enumerable being iterated. + The to use. + The configured enumerable. + + + Represents a builder for asynchronous iterators. + + + Creates an instance of the struct. + The initialized instance. + + + Invokes on the state machine while guarding the . + The type of the state machine. + The state machine instance, passed by reference. + + + Schedules the state machine to proceed to the next action when the specified awaiter completes. + The type of the awaiter. + The type of the state machine. + The awaiter. + The state machine. + + + Schedules the state machine to proceed to the next action when the specified awaiter completes. + The type of the awaiter. + The type of the state machine. + The awaiter. + The state machine. + + + Marks iteration as being completed, whether successfully or otherwise. + + + Gets an object that may be used to uniquely identify this builder to the debugger. + + + Indicates whether a method is an asynchronous iterator. + + + Initializes a new instance of the class. + The type object for the underlying state machine type that's used to implement a state machine method. + + + Provides a type that can be used to configure how awaits on an are performed. + + + Provides an awaitable async enumerable that enables cancelable iteration and configured awaits. + + + Configures how awaits on the tasks returned from an async iteration will be performed. + Whether to capture and marshal back to the current context. + The configured enumerable. + This will replace any previous value set by for this iteration. + + + Sets the to be passed to when iterating. + The to use. + The configured enumerable. + This will replace any previous set by for this iteration. + + + Provides an awaitable async enumerator that enables cancelable iteration and configured awaits. + + + Advances the enumerator asynchronously to the next element of the collection. + + A that will complete with a result of true + if the enumerator was successfully advanced to the next element, or false if the enumerator has + passed the end of the collection. + + + + Gets the element in the collection at the current position of the enumerator. + + + + Performs application-defined tasks associated with freeing, releasing, or + resetting unmanaged resources asynchronously. + + + + Exposes an enumerator that provides asynchronous iteration over values of a specified type. + The type of values to enumerate. + + + Returns an enumerator that iterates asynchronously through the collection. + A that may be used to cancel the asynchronous iteration. + An enumerator that can be used to iterate asynchronously through the collection. + + + Supports a simple asynchronous iteration over a generic collection. + The type of objects to enumerate. + + + Advances the enumerator asynchronously to the next element of the collection. + + A that will complete with a result of true if the enumerator + was successfully advanced to the next element, or false if the enumerator has passed the end + of the collection. + + + + Gets the element in the collection at the current position of the enumerator. + + + Provides a mechanism for releasing unmanaged resources asynchronously. + + + + Performs application-defined tasks associated with freeing, releasing, or + resetting unmanaged resources asynchronously. + + + + diff --git a/app_data/jobs/triggered/utility/Newtonsoft.Json.dll b/app_data/jobs/triggered/utility/Newtonsoft.Json.dll new file mode 100644 index 0000000000000000000000000000000000000000..e5c8978e063e0dd38ea4cf793192872a4c259681 GIT binary patch literal 652288 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∾yAAH9 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 z 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
tA!((pXsA`TFta~pyN~fY`5Ur8 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

Z% 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

S1VfUB-{6^D_J`v+xM$0 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