1# coding=utf-8
2# --------------------------------------------------------------------------
3# Copyright (c) Microsoft Corporation. All rights reserved.
4# Licensed under the MIT License. See License.txt in the project root for license information.
5# Code generated by Microsoft (R) AutoRest Code Generator.
6# Changes may cause incorrect behavior and will be lost if the code is regenerated.
7# --------------------------------------------------------------------------
8
9from azure.core.exceptions import HttpResponseError
10import msrest.serialization
11
12
13class AccessPolicy(msrest.serialization.Model):
14    """An Access policy.
15
16    :param start: the date-time the policy is active.
17    :type start: str
18    :param expiry: the date-time the policy expires.
19    :type expiry: str
20    :param permission: the permissions for the acl policy.
21    :type permission: str
22    """
23
24    _attribute_map = {
25        'start': {'key': 'Start', 'type': 'str'},
26        'expiry': {'key': 'Expiry', 'type': 'str'},
27        'permission': {'key': 'Permission', 'type': 'str'},
28    }
29
30    def __init__(
31        self,
32        **kwargs
33    ):
34        super(AccessPolicy, self).__init__(**kwargs)
35        self.start = kwargs.get('start', None)
36        self.expiry = kwargs.get('expiry', None)
37        self.permission = kwargs.get('permission', None)
38
39
40class AppendPositionAccessConditions(msrest.serialization.Model):
41    """Parameter group.
42
43    :param max_size: Optional conditional header. The max length in bytes permitted for the append
44     blob. If the Append Block operation would cause the blob to exceed that limit or if the blob
45     size is already greater than the value specified in this header, the request will fail with
46     MaxBlobSizeConditionNotMet error (HTTP status code 412 - Precondition Failed).
47    :type max_size: long
48    :param append_position: Optional conditional header, used only for the Append Block operation.
49     A number indicating the byte offset to compare. Append Block will succeed only if the append
50     position is equal to this number. If it is not, the request will fail with the
51     AppendPositionConditionNotMet error (HTTP status code 412 - Precondition Failed).
52    :type append_position: long
53    """
54
55    _attribute_map = {
56        'max_size': {'key': 'maxSize', 'type': 'long'},
57        'append_position': {'key': 'appendPosition', 'type': 'long'},
58    }
59
60    def __init__(
61        self,
62        **kwargs
63    ):
64        super(AppendPositionAccessConditions, self).__init__(**kwargs)
65        self.max_size = kwargs.get('max_size', None)
66        self.append_position = kwargs.get('append_position', None)
67
68
69class ArrowConfiguration(msrest.serialization.Model):
70    """arrow configuration.
71
72    All required parameters must be populated in order to send to Azure.
73
74    :param schema: Required.
75    :type schema: list[~azure.storage.blob.models.ArrowField]
76    """
77
78    _validation = {
79        'schema': {'required': True},
80    }
81
82    _attribute_map = {
83        'schema': {'key': 'Schema', 'type': '[ArrowField]', 'xml': {'name': 'Schema', 'wrapped': True, 'itemsName': 'Field'}},
84    }
85    _xml_map = {
86        'name': 'ArrowConfiguration'
87    }
88
89    def __init__(
90        self,
91        **kwargs
92    ):
93        super(ArrowConfiguration, self).__init__(**kwargs)
94        self.schema = kwargs['schema']
95
96
97class ArrowField(msrest.serialization.Model):
98    """field of an arrow schema.
99
100    All required parameters must be populated in order to send to Azure.
101
102    :param type: Required.
103    :type type: str
104    :param name:
105    :type name: str
106    :param precision:
107    :type precision: int
108    :param scale:
109    :type scale: int
110    """
111
112    _validation = {
113        'type': {'required': True},
114    }
115
116    _attribute_map = {
117        'type': {'key': 'Type', 'type': 'str'},
118        'name': {'key': 'Name', 'type': 'str'},
119        'precision': {'key': 'Precision', 'type': 'int'},
120        'scale': {'key': 'Scale', 'type': 'int'},
121    }
122    _xml_map = {
123        'name': 'Field'
124    }
125
126    def __init__(
127        self,
128        **kwargs
129    ):
130        super(ArrowField, self).__init__(**kwargs)
131        self.type = kwargs['type']
132        self.name = kwargs.get('name', None)
133        self.precision = kwargs.get('precision', None)
134        self.scale = kwargs.get('scale', None)
135
136
137class BlobFlatListSegment(msrest.serialization.Model):
138    """BlobFlatListSegment.
139
140    All required parameters must be populated in order to send to Azure.
141
142    :param blob_items: Required.
143    :type blob_items: list[~azure.storage.blob.models.BlobItemInternal]
144    """
145
146    _validation = {
147        'blob_items': {'required': True},
148    }
149
150    _attribute_map = {
151        'blob_items': {'key': 'BlobItems', 'type': '[BlobItemInternal]'},
152    }
153    _xml_map = {
154        'name': 'Blobs'
155    }
156
157    def __init__(
158        self,
159        **kwargs
160    ):
161        super(BlobFlatListSegment, self).__init__(**kwargs)
162        self.blob_items = kwargs['blob_items']
163
164
165class BlobHierarchyListSegment(msrest.serialization.Model):
166    """BlobHierarchyListSegment.
167
168    All required parameters must be populated in order to send to Azure.
169
170    :param blob_prefixes:
171    :type blob_prefixes: list[~azure.storage.blob.models.BlobPrefix]
172    :param blob_items: Required.
173    :type blob_items: list[~azure.storage.blob.models.BlobItemInternal]
174    """
175
176    _validation = {
177        'blob_items': {'required': True},
178    }
179
180    _attribute_map = {
181        'blob_prefixes': {'key': 'BlobPrefixes', 'type': '[BlobPrefix]', 'xml': {'name': 'BlobPrefix'}},
182        'blob_items': {'key': 'BlobItems', 'type': '[BlobItemInternal]', 'xml': {'name': 'Blob', 'itemsName': 'Blob'}},
183    }
184    _xml_map = {
185        'name': 'Blobs'
186    }
187
188    def __init__(
189        self,
190        **kwargs
191    ):
192        super(BlobHierarchyListSegment, self).__init__(**kwargs)
193        self.blob_prefixes = kwargs.get('blob_prefixes', None)
194        self.blob_items = kwargs['blob_items']
195
196
197class BlobHTTPHeaders(msrest.serialization.Model):
198    """Parameter group.
199
200    :param blob_cache_control: Optional. Sets the blob's cache control. If specified, this property
201     is stored with the blob and returned with a read request.
202    :type blob_cache_control: str
203    :param blob_content_type: Optional. Sets the blob's content type. If specified, this property
204     is stored with the blob and returned with a read request.
205    :type blob_content_type: str
206    :param blob_content_md5: Optional. An MD5 hash of the blob content. Note that this hash is not
207     validated, as the hashes for the individual blocks were validated when each was uploaded.
208    :type blob_content_md5: bytearray
209    :param blob_content_encoding: Optional. Sets the blob's content encoding. If specified, this
210     property is stored with the blob and returned with a read request.
211    :type blob_content_encoding: str
212    :param blob_content_language: Optional. Set the blob's content language. If specified, this
213     property is stored with the blob and returned with a read request.
214    :type blob_content_language: str
215    :param blob_content_disposition: Optional. Sets the blob's Content-Disposition header.
216    :type blob_content_disposition: str
217    """
218
219    _attribute_map = {
220        'blob_cache_control': {'key': 'blobCacheControl', 'type': 'str'},
221        'blob_content_type': {'key': 'blobContentType', 'type': 'str'},
222        'blob_content_md5': {'key': 'blobContentMD5', 'type': 'bytearray'},
223        'blob_content_encoding': {'key': 'blobContentEncoding', 'type': 'str'},
224        'blob_content_language': {'key': 'blobContentLanguage', 'type': 'str'},
225        'blob_content_disposition': {'key': 'blobContentDisposition', 'type': 'str'},
226    }
227
228    def __init__(
229        self,
230        **kwargs
231    ):
232        super(BlobHTTPHeaders, self).__init__(**kwargs)
233        self.blob_cache_control = kwargs.get('blob_cache_control', None)
234        self.blob_content_type = kwargs.get('blob_content_type', None)
235        self.blob_content_md5 = kwargs.get('blob_content_md5', None)
236        self.blob_content_encoding = kwargs.get('blob_content_encoding', None)
237        self.blob_content_language = kwargs.get('blob_content_language', None)
238        self.blob_content_disposition = kwargs.get('blob_content_disposition', None)
239
240
241class BlobItemInternal(msrest.serialization.Model):
242    """An Azure Storage blob.
243
244    All required parameters must be populated in order to send to Azure.
245
246    :param name: Required.
247    :type name: str
248    :param deleted: Required.
249    :type deleted: bool
250    :param snapshot: Required.
251    :type snapshot: str
252    :param version_id:
253    :type version_id: str
254    :param is_current_version:
255    :type is_current_version: bool
256    :param properties: Required. Properties of a blob.
257    :type properties: ~azure.storage.blob.models.BlobPropertiesInternal
258    :param metadata:
259    :type metadata: ~azure.storage.blob.models.BlobMetadata
260    :param blob_tags: Blob tags.
261    :type blob_tags: ~azure.storage.blob.models.BlobTags
262    :param object_replication_metadata: Dictionary of :code:`<string>`.
263    :type object_replication_metadata: dict[str, str]
264    """
265
266    _validation = {
267        'name': {'required': True},
268        'deleted': {'required': True},
269        'snapshot': {'required': True},
270        'properties': {'required': True},
271    }
272
273    _attribute_map = {
274        'name': {'key': 'Name', 'type': 'str'},
275        'deleted': {'key': 'Deleted', 'type': 'bool'},
276        'snapshot': {'key': 'Snapshot', 'type': 'str'},
277        'version_id': {'key': 'VersionId', 'type': 'str'},
278        'is_current_version': {'key': 'IsCurrentVersion', 'type': 'bool'},
279        'properties': {'key': 'Properties', 'type': 'BlobPropertiesInternal'},
280        'metadata': {'key': 'Metadata', 'type': 'BlobMetadata'},
281        'blob_tags': {'key': 'BlobTags', 'type': 'BlobTags'},
282        'object_replication_metadata': {'key': 'OrMetadata', 'type': '{str}'},
283    }
284    _xml_map = {
285        'name': 'Blob'
286    }
287
288    def __init__(
289        self,
290        **kwargs
291    ):
292        super(BlobItemInternal, self).__init__(**kwargs)
293        self.name = kwargs['name']
294        self.deleted = kwargs['deleted']
295        self.snapshot = kwargs['snapshot']
296        self.version_id = kwargs.get('version_id', None)
297        self.is_current_version = kwargs.get('is_current_version', None)
298        self.properties = kwargs['properties']
299        self.metadata = kwargs.get('metadata', None)
300        self.blob_tags = kwargs.get('blob_tags', None)
301        self.object_replication_metadata = kwargs.get('object_replication_metadata', None)
302
303
304class BlobMetadata(msrest.serialization.Model):
305    """BlobMetadata.
306
307    :param additional_properties: Unmatched properties from the message are deserialized to this
308     collection.
309    :type additional_properties: dict[str, str]
310    :param encrypted:
311    :type encrypted: str
312    """
313
314    _attribute_map = {
315        'additional_properties': {'key': '', 'type': '{str}'},
316        'encrypted': {'key': 'Encrypted', 'type': 'str', 'xml': {'attr': True}},
317    }
318    _xml_map = {
319        'name': 'Metadata'
320    }
321
322    def __init__(
323        self,
324        **kwargs
325    ):
326        super(BlobMetadata, self).__init__(**kwargs)
327        self.additional_properties = kwargs.get('additional_properties', None)
328        self.encrypted = kwargs.get('encrypted', None)
329
330
331class BlobPrefix(msrest.serialization.Model):
332    """BlobPrefix.
333
334    All required parameters must be populated in order to send to Azure.
335
336    :param name: Required.
337    :type name: str
338    """
339
340    _validation = {
341        'name': {'required': True},
342    }
343
344    _attribute_map = {
345        'name': {'key': 'Name', 'type': 'str'},
346    }
347
348    def __init__(
349        self,
350        **kwargs
351    ):
352        super(BlobPrefix, self).__init__(**kwargs)
353        self.name = kwargs['name']
354
355
356class BlobPropertiesInternal(msrest.serialization.Model):
357    """Properties of a blob.
358
359    All required parameters must be populated in order to send to Azure.
360
361    :param creation_time:
362    :type creation_time: ~datetime.datetime
363    :param last_modified: Required.
364    :type last_modified: ~datetime.datetime
365    :param etag: Required.
366    :type etag: str
367    :param content_length: Size in bytes.
368    :type content_length: long
369    :param content_type:
370    :type content_type: str
371    :param content_encoding:
372    :type content_encoding: str
373    :param content_language:
374    :type content_language: str
375    :param content_md5:
376    :type content_md5: bytearray
377    :param content_disposition:
378    :type content_disposition: str
379    :param cache_control:
380    :type cache_control: str
381    :param blob_sequence_number:
382    :type blob_sequence_number: long
383    :param blob_type:  Possible values include: "BlockBlob", "PageBlob", "AppendBlob".
384    :type blob_type: str or ~azure.storage.blob.models.BlobType
385    :param lease_status:  Possible values include: "locked", "unlocked".
386    :type lease_status: str or ~azure.storage.blob.models.LeaseStatusType
387    :param lease_state:  Possible values include: "available", "leased", "expired", "breaking",
388     "broken".
389    :type lease_state: str or ~azure.storage.blob.models.LeaseStateType
390    :param lease_duration:  Possible values include: "infinite", "fixed".
391    :type lease_duration: str or ~azure.storage.blob.models.LeaseDurationType
392    :param copy_id:
393    :type copy_id: str
394    :param copy_status:  Possible values include: "pending", "success", "aborted", "failed".
395    :type copy_status: str or ~azure.storage.blob.models.CopyStatusType
396    :param copy_source:
397    :type copy_source: str
398    :param copy_progress:
399    :type copy_progress: str
400    :param copy_completion_time:
401    :type copy_completion_time: ~datetime.datetime
402    :param copy_status_description:
403    :type copy_status_description: str
404    :param server_encrypted:
405    :type server_encrypted: bool
406    :param incremental_copy:
407    :type incremental_copy: bool
408    :param destination_snapshot:
409    :type destination_snapshot: str
410    :param deleted_time:
411    :type deleted_time: ~datetime.datetime
412    :param remaining_retention_days:
413    :type remaining_retention_days: int
414    :param access_tier:  Possible values include: "P4", "P6", "P10", "P15", "P20", "P30", "P40",
415     "P50", "P60", "P70", "P80", "Hot", "Cool", "Archive".
416    :type access_tier: str or ~azure.storage.blob.models.AccessTier
417    :param access_tier_inferred:
418    :type access_tier_inferred: bool
419    :param archive_status:  Possible values include: "rehydrate-pending-to-hot", "rehydrate-
420     pending-to-cool".
421    :type archive_status: str or ~azure.storage.blob.models.ArchiveStatus
422    :param customer_provided_key_sha256:
423    :type customer_provided_key_sha256: str
424    :param encryption_scope: The name of the encryption scope under which the blob is encrypted.
425    :type encryption_scope: str
426    :param access_tier_change_time:
427    :type access_tier_change_time: ~datetime.datetime
428    :param tag_count:
429    :type tag_count: int
430    :param expires_on:
431    :type expires_on: ~datetime.datetime
432    :param is_sealed:
433    :type is_sealed: bool
434    :param rehydrate_priority: If an object is in rehydrate pending state then this header is
435     returned with priority of rehydrate. Valid values are High and Standard. Possible values
436     include: "High", "Standard".
437    :type rehydrate_priority: str or ~azure.storage.blob.models.RehydratePriority
438    :param last_accessed_on:
439    :type last_accessed_on: ~datetime.datetime
440    """
441
442    _validation = {
443        'last_modified': {'required': True},
444        'etag': {'required': True},
445    }
446
447    _attribute_map = {
448        'creation_time': {'key': 'Creation-Time', 'type': 'rfc-1123'},
449        'last_modified': {'key': 'Last-Modified', 'type': 'rfc-1123'},
450        'etag': {'key': 'Etag', 'type': 'str'},
451        'content_length': {'key': 'Content-Length', 'type': 'long'},
452        'content_type': {'key': 'Content-Type', 'type': 'str'},
453        'content_encoding': {'key': 'Content-Encoding', 'type': 'str'},
454        'content_language': {'key': 'Content-Language', 'type': 'str'},
455        'content_md5': {'key': 'Content-MD5', 'type': 'bytearray'},
456        'content_disposition': {'key': 'Content-Disposition', 'type': 'str'},
457        'cache_control': {'key': 'Cache-Control', 'type': 'str'},
458        'blob_sequence_number': {'key': 'x-ms-blob-sequence-number', 'type': 'long'},
459        'blob_type': {'key': 'BlobType', 'type': 'str'},
460        'lease_status': {'key': 'LeaseStatus', 'type': 'str'},
461        'lease_state': {'key': 'LeaseState', 'type': 'str'},
462        'lease_duration': {'key': 'LeaseDuration', 'type': 'str'},
463        'copy_id': {'key': 'CopyId', 'type': 'str'},
464        'copy_status': {'key': 'CopyStatus', 'type': 'str'},
465        'copy_source': {'key': 'CopySource', 'type': 'str'},
466        'copy_progress': {'key': 'CopyProgress', 'type': 'str'},
467        'copy_completion_time': {'key': 'CopyCompletionTime', 'type': 'rfc-1123'},
468        'copy_status_description': {'key': 'CopyStatusDescription', 'type': 'str'},
469        'server_encrypted': {'key': 'ServerEncrypted', 'type': 'bool'},
470        'incremental_copy': {'key': 'IncrementalCopy', 'type': 'bool'},
471        'destination_snapshot': {'key': 'DestinationSnapshot', 'type': 'str'},
472        'deleted_time': {'key': 'DeletedTime', 'type': 'rfc-1123'},
473        'remaining_retention_days': {'key': 'RemainingRetentionDays', 'type': 'int'},
474        'access_tier': {'key': 'AccessTier', 'type': 'str'},
475        'access_tier_inferred': {'key': 'AccessTierInferred', 'type': 'bool'},
476        'archive_status': {'key': 'ArchiveStatus', 'type': 'str'},
477        'customer_provided_key_sha256': {'key': 'CustomerProvidedKeySha256', 'type': 'str'},
478        'encryption_scope': {'key': 'EncryptionScope', 'type': 'str'},
479        'access_tier_change_time': {'key': 'AccessTierChangeTime', 'type': 'rfc-1123'},
480        'tag_count': {'key': 'TagCount', 'type': 'int'},
481        'expires_on': {'key': 'Expiry-Time', 'type': 'rfc-1123'},
482        'is_sealed': {'key': 'Sealed', 'type': 'bool'},
483        'rehydrate_priority': {'key': 'RehydratePriority', 'type': 'str'},
484        'last_accessed_on': {'key': 'LastAccessTime', 'type': 'rfc-1123'},
485    }
486    _xml_map = {
487        'name': 'Properties'
488    }
489
490    def __init__(
491        self,
492        **kwargs
493    ):
494        super(BlobPropertiesInternal, self).__init__(**kwargs)
495        self.creation_time = kwargs.get('creation_time', None)
496        self.last_modified = kwargs['last_modified']
497        self.etag = kwargs['etag']
498        self.content_length = kwargs.get('content_length', None)
499        self.content_type = kwargs.get('content_type', None)
500        self.content_encoding = kwargs.get('content_encoding', None)
501        self.content_language = kwargs.get('content_language', None)
502        self.content_md5 = kwargs.get('content_md5', None)
503        self.content_disposition = kwargs.get('content_disposition', None)
504        self.cache_control = kwargs.get('cache_control', None)
505        self.blob_sequence_number = kwargs.get('blob_sequence_number', None)
506        self.blob_type = kwargs.get('blob_type', None)
507        self.lease_status = kwargs.get('lease_status', None)
508        self.lease_state = kwargs.get('lease_state', None)
509        self.lease_duration = kwargs.get('lease_duration', None)
510        self.copy_id = kwargs.get('copy_id', None)
511        self.copy_status = kwargs.get('copy_status', None)
512        self.copy_source = kwargs.get('copy_source', None)
513        self.copy_progress = kwargs.get('copy_progress', None)
514        self.copy_completion_time = kwargs.get('copy_completion_time', None)
515        self.copy_status_description = kwargs.get('copy_status_description', None)
516        self.server_encrypted = kwargs.get('server_encrypted', None)
517        self.incremental_copy = kwargs.get('incremental_copy', None)
518        self.destination_snapshot = kwargs.get('destination_snapshot', None)
519        self.deleted_time = kwargs.get('deleted_time', None)
520        self.remaining_retention_days = kwargs.get('remaining_retention_days', None)
521        self.access_tier = kwargs.get('access_tier', None)
522        self.access_tier_inferred = kwargs.get('access_tier_inferred', None)
523        self.archive_status = kwargs.get('archive_status', None)
524        self.customer_provided_key_sha256 = kwargs.get('customer_provided_key_sha256', None)
525        self.encryption_scope = kwargs.get('encryption_scope', None)
526        self.access_tier_change_time = kwargs.get('access_tier_change_time', None)
527        self.tag_count = kwargs.get('tag_count', None)
528        self.expires_on = kwargs.get('expires_on', None)
529        self.is_sealed = kwargs.get('is_sealed', None)
530        self.rehydrate_priority = kwargs.get('rehydrate_priority', None)
531        self.last_accessed_on = kwargs.get('last_accessed_on', None)
532
533
534class BlobTag(msrest.serialization.Model):
535    """BlobTag.
536
537    All required parameters must be populated in order to send to Azure.
538
539    :param key: Required.
540    :type key: str
541    :param value: Required.
542    :type value: str
543    """
544
545    _validation = {
546        'key': {'required': True},
547        'value': {'required': True},
548    }
549
550    _attribute_map = {
551        'key': {'key': 'Key', 'type': 'str'},
552        'value': {'key': 'Value', 'type': 'str'},
553    }
554    _xml_map = {
555        'name': 'Tag'
556    }
557
558    def __init__(
559        self,
560        **kwargs
561    ):
562        super(BlobTag, self).__init__(**kwargs)
563        self.key = kwargs['key']
564        self.value = kwargs['value']
565
566
567class BlobTags(msrest.serialization.Model):
568    """Blob tags.
569
570    All required parameters must be populated in order to send to Azure.
571
572    :param blob_tag_set: Required.
573    :type blob_tag_set: list[~azure.storage.blob.models.BlobTag]
574    """
575
576    _validation = {
577        'blob_tag_set': {'required': True},
578    }
579
580    _attribute_map = {
581        'blob_tag_set': {'key': 'BlobTagSet', 'type': '[BlobTag]', 'xml': {'name': 'TagSet', 'wrapped': True, 'itemsName': 'Tag'}},
582    }
583    _xml_map = {
584        'name': 'Tags'
585    }
586
587    def __init__(
588        self,
589        **kwargs
590    ):
591        super(BlobTags, self).__init__(**kwargs)
592        self.blob_tag_set = kwargs['blob_tag_set']
593
594
595class Block(msrest.serialization.Model):
596    """Represents a single block in a block blob.  It describes the block's ID and size.
597
598    All required parameters must be populated in order to send to Azure.
599
600    :param name: Required. The base64 encoded block ID.
601    :type name: str
602    :param size: Required. The block size in bytes.
603    :type size: int
604    """
605
606    _validation = {
607        'name': {'required': True},
608        'size': {'required': True},
609    }
610
611    _attribute_map = {
612        'name': {'key': 'Name', 'type': 'str'},
613        'size': {'key': 'Size', 'type': 'int'},
614    }
615
616    def __init__(
617        self,
618        **kwargs
619    ):
620        super(Block, self).__init__(**kwargs)
621        self.name = kwargs['name']
622        self.size = kwargs['size']
623
624
625class BlockList(msrest.serialization.Model):
626    """BlockList.
627
628    :param committed_blocks:
629    :type committed_blocks: list[~azure.storage.blob.models.Block]
630    :param uncommitted_blocks:
631    :type uncommitted_blocks: list[~azure.storage.blob.models.Block]
632    """
633
634    _attribute_map = {
635        'committed_blocks': {'key': 'CommittedBlocks', 'type': '[Block]', 'xml': {'wrapped': True}},
636        'uncommitted_blocks': {'key': 'UncommittedBlocks', 'type': '[Block]', 'xml': {'wrapped': True}},
637    }
638
639    def __init__(
640        self,
641        **kwargs
642    ):
643        super(BlockList, self).__init__(**kwargs)
644        self.committed_blocks = kwargs.get('committed_blocks', None)
645        self.uncommitted_blocks = kwargs.get('uncommitted_blocks', None)
646
647
648class BlockLookupList(msrest.serialization.Model):
649    """BlockLookupList.
650
651    :param committed:
652    :type committed: list[str]
653    :param uncommitted:
654    :type uncommitted: list[str]
655    :param latest:
656    :type latest: list[str]
657    """
658
659    _attribute_map = {
660        'committed': {'key': 'Committed', 'type': '[str]', 'xml': {'itemsName': 'Committed'}},
661        'uncommitted': {'key': 'Uncommitted', 'type': '[str]', 'xml': {'itemsName': 'Uncommitted'}},
662        'latest': {'key': 'Latest', 'type': '[str]', 'xml': {'itemsName': 'Latest'}},
663    }
664    _xml_map = {
665        'name': 'BlockList'
666    }
667
668    def __init__(
669        self,
670        **kwargs
671    ):
672        super(BlockLookupList, self).__init__(**kwargs)
673        self.committed = kwargs.get('committed', None)
674        self.uncommitted = kwargs.get('uncommitted', None)
675        self.latest = kwargs.get('latest', None)
676
677
678class ClearRange(msrest.serialization.Model):
679    """ClearRange.
680
681    All required parameters must be populated in order to send to Azure.
682
683    :param start: Required.
684    :type start: long
685    :param end: Required.
686    :type end: long
687    """
688
689    _validation = {
690        'start': {'required': True},
691        'end': {'required': True},
692    }
693
694    _attribute_map = {
695        'start': {'key': 'Start', 'type': 'long', 'xml': {'name': 'Start'}},
696        'end': {'key': 'End', 'type': 'long', 'xml': {'name': 'End'}},
697    }
698    _xml_map = {
699        'name': 'ClearRange'
700    }
701
702    def __init__(
703        self,
704        **kwargs
705    ):
706        super(ClearRange, self).__init__(**kwargs)
707        self.start = kwargs['start']
708        self.end = kwargs['end']
709
710
711class ContainerCpkScopeInfo(msrest.serialization.Model):
712    """Parameter group.
713
714    :param default_encryption_scope: Optional.  Version 2019-07-07 and later.  Specifies the
715     default encryption scope to set on the container and use for all future writes.
716    :type default_encryption_scope: str
717    :param prevent_encryption_scope_override: Optional.  Version 2019-07-07 and newer.  If true,
718     prevents any request from specifying a different encryption scope than the scope set on the
719     container.
720    :type prevent_encryption_scope_override: bool
721    """
722
723    _attribute_map = {
724        'default_encryption_scope': {'key': 'DefaultEncryptionScope', 'type': 'str'},
725        'prevent_encryption_scope_override': {'key': 'PreventEncryptionScopeOverride', 'type': 'bool'},
726    }
727
728    def __init__(
729        self,
730        **kwargs
731    ):
732        super(ContainerCpkScopeInfo, self).__init__(**kwargs)
733        self.default_encryption_scope = kwargs.get('default_encryption_scope', None)
734        self.prevent_encryption_scope_override = kwargs.get('prevent_encryption_scope_override', None)
735
736
737class ContainerItem(msrest.serialization.Model):
738    """An Azure Storage container.
739
740    All required parameters must be populated in order to send to Azure.
741
742    :param name: Required.
743    :type name: str
744    :param deleted:
745    :type deleted: bool
746    :param version:
747    :type version: str
748    :param properties: Required. Properties of a container.
749    :type properties: ~azure.storage.blob.models.ContainerProperties
750    :param metadata: Dictionary of :code:`<string>`.
751    :type metadata: dict[str, str]
752    """
753
754    _validation = {
755        'name': {'required': True},
756        'properties': {'required': True},
757    }
758
759    _attribute_map = {
760        'name': {'key': 'Name', 'type': 'str'},
761        'deleted': {'key': 'Deleted', 'type': 'bool'},
762        'version': {'key': 'Version', 'type': 'str'},
763        'properties': {'key': 'Properties', 'type': 'ContainerProperties'},
764        'metadata': {'key': 'Metadata', 'type': '{str}'},
765    }
766    _xml_map = {
767        'name': 'Container'
768    }
769
770    def __init__(
771        self,
772        **kwargs
773    ):
774        super(ContainerItem, self).__init__(**kwargs)
775        self.name = kwargs['name']
776        self.deleted = kwargs.get('deleted', None)
777        self.version = kwargs.get('version', None)
778        self.properties = kwargs['properties']
779        self.metadata = kwargs.get('metadata', None)
780
781
782class ContainerProperties(msrest.serialization.Model):
783    """Properties of a container.
784
785    All required parameters must be populated in order to send to Azure.
786
787    :param last_modified: Required.
788    :type last_modified: ~datetime.datetime
789    :param etag: Required.
790    :type etag: str
791    :param lease_status:  Possible values include: "locked", "unlocked".
792    :type lease_status: str or ~azure.storage.blob.models.LeaseStatusType
793    :param lease_state:  Possible values include: "available", "leased", "expired", "breaking",
794     "broken".
795    :type lease_state: str or ~azure.storage.blob.models.LeaseStateType
796    :param lease_duration:  Possible values include: "infinite", "fixed".
797    :type lease_duration: str or ~azure.storage.blob.models.LeaseDurationType
798    :param public_access:  Possible values include: "container", "blob".
799    :type public_access: str or ~azure.storage.blob.models.PublicAccessType
800    :param has_immutability_policy:
801    :type has_immutability_policy: bool
802    :param has_legal_hold:
803    :type has_legal_hold: bool
804    :param default_encryption_scope:
805    :type default_encryption_scope: str
806    :param prevent_encryption_scope_override:
807    :type prevent_encryption_scope_override: bool
808    :param deleted_time:
809    :type deleted_time: ~datetime.datetime
810    :param remaining_retention_days:
811    :type remaining_retention_days: int
812    """
813
814    _validation = {
815        'last_modified': {'required': True},
816        'etag': {'required': True},
817    }
818
819    _attribute_map = {
820        'last_modified': {'key': 'Last-Modified', 'type': 'rfc-1123'},
821        'etag': {'key': 'Etag', 'type': 'str'},
822        'lease_status': {'key': 'LeaseStatus', 'type': 'str'},
823        'lease_state': {'key': 'LeaseState', 'type': 'str'},
824        'lease_duration': {'key': 'LeaseDuration', 'type': 'str'},
825        'public_access': {'key': 'PublicAccess', 'type': 'str'},
826        'has_immutability_policy': {'key': 'HasImmutabilityPolicy', 'type': 'bool'},
827        'has_legal_hold': {'key': 'HasLegalHold', 'type': 'bool'},
828        'default_encryption_scope': {'key': 'DefaultEncryptionScope', 'type': 'str'},
829        'prevent_encryption_scope_override': {'key': 'DenyEncryptionScopeOverride', 'type': 'bool'},
830        'deleted_time': {'key': 'DeletedTime', 'type': 'rfc-1123'},
831        'remaining_retention_days': {'key': 'RemainingRetentionDays', 'type': 'int'},
832    }
833
834    def __init__(
835        self,
836        **kwargs
837    ):
838        super(ContainerProperties, self).__init__(**kwargs)
839        self.last_modified = kwargs['last_modified']
840        self.etag = kwargs['etag']
841        self.lease_status = kwargs.get('lease_status', None)
842        self.lease_state = kwargs.get('lease_state', None)
843        self.lease_duration = kwargs.get('lease_duration', None)
844        self.public_access = kwargs.get('public_access', None)
845        self.has_immutability_policy = kwargs.get('has_immutability_policy', None)
846        self.has_legal_hold = kwargs.get('has_legal_hold', None)
847        self.default_encryption_scope = kwargs.get('default_encryption_scope', None)
848        self.prevent_encryption_scope_override = kwargs.get('prevent_encryption_scope_override', None)
849        self.deleted_time = kwargs.get('deleted_time', None)
850        self.remaining_retention_days = kwargs.get('remaining_retention_days', None)
851
852
853class CorsRule(msrest.serialization.Model):
854    """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.
855
856    All required parameters must be populated in order to send to Azure.
857
858    :param allowed_origins: Required. The origin domains that are permitted to make a request
859     against the storage service via CORS. The origin domain is the domain from which the request
860     originates. Note that the origin must be an exact case-sensitive match with the origin that the
861     user age sends to the service. You can also use the wildcard character '*' to allow all origin
862     domains to make requests via CORS.
863    :type allowed_origins: str
864    :param allowed_methods: Required. The methods (HTTP request verbs) that the origin domain may
865     use for a CORS request. (comma separated).
866    :type allowed_methods: str
867    :param allowed_headers: Required. the request headers that the origin domain may specify on the
868     CORS request.
869    :type allowed_headers: str
870    :param exposed_headers: Required. The response headers that may be sent in the response to the
871     CORS request and exposed by the browser to the request issuer.
872    :type exposed_headers: str
873    :param max_age_in_seconds: Required. The maximum amount time that a browser should cache the
874     preflight OPTIONS request.
875    :type max_age_in_seconds: int
876    """
877
878    _validation = {
879        'allowed_origins': {'required': True},
880        'allowed_methods': {'required': True},
881        'allowed_headers': {'required': True},
882        'exposed_headers': {'required': True},
883        'max_age_in_seconds': {'required': True, 'minimum': 0},
884    }
885
886    _attribute_map = {
887        'allowed_origins': {'key': 'AllowedOrigins', 'type': 'str'},
888        'allowed_methods': {'key': 'AllowedMethods', 'type': 'str'},
889        'allowed_headers': {'key': 'AllowedHeaders', 'type': 'str'},
890        'exposed_headers': {'key': 'ExposedHeaders', 'type': 'str'},
891        'max_age_in_seconds': {'key': 'MaxAgeInSeconds', 'type': 'int'},
892    }
893
894    def __init__(
895        self,
896        **kwargs
897    ):
898        super(CorsRule, self).__init__(**kwargs)
899        self.allowed_origins = kwargs['allowed_origins']
900        self.allowed_methods = kwargs['allowed_methods']
901        self.allowed_headers = kwargs['allowed_headers']
902        self.exposed_headers = kwargs['exposed_headers']
903        self.max_age_in_seconds = kwargs['max_age_in_seconds']
904
905
906class CpkInfo(msrest.serialization.Model):
907    """Parameter group.
908
909    :param encryption_key: Optional. Specifies the encryption key to use to encrypt the data
910     provided in the request. If not specified, encryption is performed with the root account
911     encryption key.  For more information, see Encryption at Rest for Azure Storage Services.
912    :type encryption_key: str
913    :param encryption_key_sha256: The SHA-256 hash of the provided encryption key. Must be provided
914     if the x-ms-encryption-key header is provided.
915    :type encryption_key_sha256: str
916    """
917
918    _attribute_map = {
919        'encryption_key': {'key': 'encryptionKey', 'type': 'str'},
920        'encryption_key_sha256': {'key': 'encryptionKeySha256', 'type': 'str'},
921    }
922
923    def __init__(
924        self,
925        **kwargs
926    ):
927        super(CpkInfo, self).__init__(**kwargs)
928        self.encryption_key = kwargs.get('encryption_key', None)
929        self.encryption_key_sha256 = kwargs.get('encryption_key_sha256', None)
930
931
932class CpkScopeInfo(msrest.serialization.Model):
933    """Parameter group.
934
935    :param encryption_scope: Optional. Version 2019-07-07 and later.  Specifies the name of the
936     encryption scope to use to encrypt the data provided in the request. If not specified,
937     encryption is performed with the default account encryption scope.  For more information, see
938     Encryption at Rest for Azure Storage Services.
939    :type encryption_scope: str
940    """
941
942    _attribute_map = {
943        'encryption_scope': {'key': 'encryptionScope', 'type': 'str'},
944    }
945
946    def __init__(
947        self,
948        **kwargs
949    ):
950        super(CpkScopeInfo, self).__init__(**kwargs)
951        self.encryption_scope = kwargs.get('encryption_scope', None)
952
953
954class DataLakeStorageError(msrest.serialization.Model):
955    """DataLakeStorageError.
956
957    :param data_lake_storage_error_details: The service error response object.
958    :type data_lake_storage_error_details: ~azure.storage.blob.models.DataLakeStorageErrorDetails
959    """
960
961    _attribute_map = {
962        'data_lake_storage_error_details': {'key': 'error', 'type': 'DataLakeStorageErrorDetails'},
963    }
964
965    def __init__(
966        self,
967        **kwargs
968    ):
969        super(DataLakeStorageError, self).__init__(**kwargs)
970        self.data_lake_storage_error_details = kwargs.get('data_lake_storage_error_details', None)
971
972
973class DataLakeStorageErrorDetails(msrest.serialization.Model):
974    """The service error response object.
975
976    :param code: The service error code.
977    :type code: str
978    :param message: The service error message.
979    :type message: str
980    """
981
982    _attribute_map = {
983        'code': {'key': 'Code', 'type': 'str'},
984        'message': {'key': 'Message', 'type': 'str'},
985    }
986
987    def __init__(
988        self,
989        **kwargs
990    ):
991        super(DataLakeStorageErrorDetails, self).__init__(**kwargs)
992        self.code = kwargs.get('code', None)
993        self.message = kwargs.get('message', None)
994
995
996class DelimitedTextConfiguration(msrest.serialization.Model):
997    """delimited text configuration.
998
999    All required parameters must be populated in order to send to Azure.
1000
1001    :param column_separator: Required. column separator.
1002    :type column_separator: str
1003    :param field_quote: Required. field quote.
1004    :type field_quote: str
1005    :param record_separator: Required. record separator.
1006    :type record_separator: str
1007    :param escape_char: Required. escape char.
1008    :type escape_char: str
1009    :param headers_present: Required. has headers.
1010    :type headers_present: bool
1011    """
1012
1013    _validation = {
1014        'column_separator': {'required': True},
1015        'field_quote': {'required': True},
1016        'record_separator': {'required': True},
1017        'escape_char': {'required': True},
1018        'headers_present': {'required': True},
1019    }
1020
1021    _attribute_map = {
1022        'column_separator': {'key': 'ColumnSeparator', 'type': 'str', 'xml': {'name': 'ColumnSeparator'}},
1023        'field_quote': {'key': 'FieldQuote', 'type': 'str', 'xml': {'name': 'FieldQuote'}},
1024        'record_separator': {'key': 'RecordSeparator', 'type': 'str', 'xml': {'name': 'RecordSeparator'}},
1025        'escape_char': {'key': 'EscapeChar', 'type': 'str', 'xml': {'name': 'EscapeChar'}},
1026        'headers_present': {'key': 'HeadersPresent', 'type': 'bool', 'xml': {'name': 'HasHeaders'}},
1027    }
1028    _xml_map = {
1029        'name': 'DelimitedTextConfiguration'
1030    }
1031
1032    def __init__(
1033        self,
1034        **kwargs
1035    ):
1036        super(DelimitedTextConfiguration, self).__init__(**kwargs)
1037        self.column_separator = kwargs['column_separator']
1038        self.field_quote = kwargs['field_quote']
1039        self.record_separator = kwargs['record_separator']
1040        self.escape_char = kwargs['escape_char']
1041        self.headers_present = kwargs['headers_present']
1042
1043
1044class DirectoryHttpHeaders(msrest.serialization.Model):
1045    """Parameter group.
1046
1047    :param cache_control: Cache control for given resource.
1048    :type cache_control: str
1049    :param content_type: Content type for given resource.
1050    :type content_type: str
1051    :param content_encoding: Content encoding for given resource.
1052    :type content_encoding: str
1053    :param content_language: Content language for given resource.
1054    :type content_language: str
1055    :param content_disposition: Content disposition for given resource.
1056    :type content_disposition: str
1057    """
1058
1059    _attribute_map = {
1060        'cache_control': {'key': 'cacheControl', 'type': 'str'},
1061        'content_type': {'key': 'contentType', 'type': 'str'},
1062        'content_encoding': {'key': 'contentEncoding', 'type': 'str'},
1063        'content_language': {'key': 'contentLanguage', 'type': 'str'},
1064        'content_disposition': {'key': 'contentDisposition', 'type': 'str'},
1065    }
1066
1067    def __init__(
1068        self,
1069        **kwargs
1070    ):
1071        super(DirectoryHttpHeaders, self).__init__(**kwargs)
1072        self.cache_control = kwargs.get('cache_control', None)
1073        self.content_type = kwargs.get('content_type', None)
1074        self.content_encoding = kwargs.get('content_encoding', None)
1075        self.content_language = kwargs.get('content_language', None)
1076        self.content_disposition = kwargs.get('content_disposition', None)
1077
1078
1079class FilterBlobItem(msrest.serialization.Model):
1080    """Blob info from a Filter Blobs API call.
1081
1082    All required parameters must be populated in order to send to Azure.
1083
1084    :param name: Required.
1085    :type name: str
1086    :param container_name: Required.
1087    :type container_name: str
1088    :param tags: A set of tags. Blob tags.
1089    :type tags: ~azure.storage.blob.models.BlobTags
1090    """
1091
1092    _validation = {
1093        'name': {'required': True},
1094        'container_name': {'required': True},
1095    }
1096
1097    _attribute_map = {
1098        'name': {'key': 'Name', 'type': 'str'},
1099        'container_name': {'key': 'ContainerName', 'type': 'str'},
1100        'tags': {'key': 'Tags', 'type': 'BlobTags'},
1101    }
1102    _xml_map = {
1103        'name': 'Blob'
1104    }
1105
1106    def __init__(
1107        self,
1108        **kwargs
1109    ):
1110        super(FilterBlobItem, self).__init__(**kwargs)
1111        self.name = kwargs['name']
1112        self.container_name = kwargs['container_name']
1113        self.tags = kwargs.get('tags', None)
1114
1115
1116class FilterBlobSegment(msrest.serialization.Model):
1117    """The result of a Filter Blobs API call.
1118
1119    All required parameters must be populated in order to send to Azure.
1120
1121    :param service_endpoint: Required.
1122    :type service_endpoint: str
1123    :param where: Required.
1124    :type where: str
1125    :param blobs: Required.
1126    :type blobs: list[~azure.storage.blob.models.FilterBlobItem]
1127    :param next_marker:
1128    :type next_marker: str
1129    """
1130
1131    _validation = {
1132        'service_endpoint': {'required': True},
1133        'where': {'required': True},
1134        'blobs': {'required': True},
1135    }
1136
1137    _attribute_map = {
1138        'service_endpoint': {'key': 'ServiceEndpoint', 'type': 'str', 'xml': {'attr': True}},
1139        'where': {'key': 'Where', 'type': 'str'},
1140        'blobs': {'key': 'Blobs', 'type': '[FilterBlobItem]', 'xml': {'name': 'Blobs', 'wrapped': True, 'itemsName': 'Blob'}},
1141        'next_marker': {'key': 'NextMarker', 'type': 'str'},
1142    }
1143    _xml_map = {
1144        'name': 'EnumerationResults'
1145    }
1146
1147    def __init__(
1148        self,
1149        **kwargs
1150    ):
1151        super(FilterBlobSegment, self).__init__(**kwargs)
1152        self.service_endpoint = kwargs['service_endpoint']
1153        self.where = kwargs['where']
1154        self.blobs = kwargs['blobs']
1155        self.next_marker = kwargs.get('next_marker', None)
1156
1157
1158class GeoReplication(msrest.serialization.Model):
1159    """Geo-Replication information for the Secondary Storage Service.
1160
1161    All required parameters must be populated in order to send to Azure.
1162
1163    :param status: Required. The status of the secondary location. Possible values include: "live",
1164     "bootstrap", "unavailable".
1165    :type status: str or ~azure.storage.blob.models.GeoReplicationStatusType
1166    :param last_sync_time: Required. A GMT date/time value, to the second. All primary writes
1167     preceding this value are guaranteed to be available for read operations at the secondary.
1168     Primary writes after this point in time may or may not be available for reads.
1169    :type last_sync_time: ~datetime.datetime
1170    """
1171
1172    _validation = {
1173        'status': {'required': True},
1174        'last_sync_time': {'required': True},
1175    }
1176
1177    _attribute_map = {
1178        'status': {'key': 'Status', 'type': 'str'},
1179        'last_sync_time': {'key': 'LastSyncTime', 'type': 'rfc-1123'},
1180    }
1181
1182    def __init__(
1183        self,
1184        **kwargs
1185    ):
1186        super(GeoReplication, self).__init__(**kwargs)
1187        self.status = kwargs['status']
1188        self.last_sync_time = kwargs['last_sync_time']
1189
1190
1191class JsonTextConfiguration(msrest.serialization.Model):
1192    """json text configuration.
1193
1194    All required parameters must be populated in order to send to Azure.
1195
1196    :param record_separator: Required. record separator.
1197    :type record_separator: str
1198    """
1199
1200    _validation = {
1201        'record_separator': {'required': True},
1202    }
1203
1204    _attribute_map = {
1205        'record_separator': {'key': 'RecordSeparator', 'type': 'str', 'xml': {'name': 'RecordSeparator'}},
1206    }
1207    _xml_map = {
1208        'name': 'JsonTextConfiguration'
1209    }
1210
1211    def __init__(
1212        self,
1213        **kwargs
1214    ):
1215        super(JsonTextConfiguration, self).__init__(**kwargs)
1216        self.record_separator = kwargs['record_separator']
1217
1218
1219class KeyInfo(msrest.serialization.Model):
1220    """Key information.
1221
1222    All required parameters must be populated in order to send to Azure.
1223
1224    :param start: Required. The date-time the key is active in ISO 8601 UTC time.
1225    :type start: str
1226    :param expiry: Required. The date-time the key expires in ISO 8601 UTC time.
1227    :type expiry: str
1228    """
1229
1230    _validation = {
1231        'start': {'required': True},
1232        'expiry': {'required': True},
1233    }
1234
1235    _attribute_map = {
1236        'start': {'key': 'Start', 'type': 'str'},
1237        'expiry': {'key': 'Expiry', 'type': 'str'},
1238    }
1239
1240    def __init__(
1241        self,
1242        **kwargs
1243    ):
1244        super(KeyInfo, self).__init__(**kwargs)
1245        self.start = kwargs['start']
1246        self.expiry = kwargs['expiry']
1247
1248
1249class LeaseAccessConditions(msrest.serialization.Model):
1250    """Parameter group.
1251
1252    :param lease_id: If specified, the operation only succeeds if the resource's lease is active
1253     and matches this ID.
1254    :type lease_id: str
1255    """
1256
1257    _attribute_map = {
1258        'lease_id': {'key': 'leaseId', 'type': 'str'},
1259    }
1260
1261    def __init__(
1262        self,
1263        **kwargs
1264    ):
1265        super(LeaseAccessConditions, self).__init__(**kwargs)
1266        self.lease_id = kwargs.get('lease_id', None)
1267
1268
1269class ListBlobsFlatSegmentResponse(msrest.serialization.Model):
1270    """An enumeration of blobs.
1271
1272    All required parameters must be populated in order to send to Azure.
1273
1274    :param service_endpoint: Required.
1275    :type service_endpoint: str
1276    :param container_name: Required.
1277    :type container_name: str
1278    :param prefix:
1279    :type prefix: str
1280    :param marker:
1281    :type marker: str
1282    :param max_results:
1283    :type max_results: int
1284    :param segment: Required.
1285    :type segment: ~azure.storage.blob.models.BlobFlatListSegment
1286    :param next_marker:
1287    :type next_marker: str
1288    """
1289
1290    _validation = {
1291        'service_endpoint': {'required': True},
1292        'container_name': {'required': True},
1293        'segment': {'required': True},
1294    }
1295
1296    _attribute_map = {
1297        'service_endpoint': {'key': 'ServiceEndpoint', 'type': 'str', 'xml': {'attr': True}},
1298        'container_name': {'key': 'ContainerName', 'type': 'str', 'xml': {'attr': True}},
1299        'prefix': {'key': 'Prefix', 'type': 'str'},
1300        'marker': {'key': 'Marker', 'type': 'str'},
1301        'max_results': {'key': 'MaxResults', 'type': 'int'},
1302        'segment': {'key': 'Segment', 'type': 'BlobFlatListSegment'},
1303        'next_marker': {'key': 'NextMarker', 'type': 'str'},
1304    }
1305    _xml_map = {
1306        'name': 'EnumerationResults'
1307    }
1308
1309    def __init__(
1310        self,
1311        **kwargs
1312    ):
1313        super(ListBlobsFlatSegmentResponse, self).__init__(**kwargs)
1314        self.service_endpoint = kwargs['service_endpoint']
1315        self.container_name = kwargs['container_name']
1316        self.prefix = kwargs.get('prefix', None)
1317        self.marker = kwargs.get('marker', None)
1318        self.max_results = kwargs.get('max_results', None)
1319        self.segment = kwargs['segment']
1320        self.next_marker = kwargs.get('next_marker', None)
1321
1322
1323class ListBlobsHierarchySegmentResponse(msrest.serialization.Model):
1324    """An enumeration of blobs.
1325
1326    All required parameters must be populated in order to send to Azure.
1327
1328    :param service_endpoint: Required.
1329    :type service_endpoint: str
1330    :param container_name: Required.
1331    :type container_name: str
1332    :param prefix:
1333    :type prefix: str
1334    :param marker:
1335    :type marker: str
1336    :param max_results:
1337    :type max_results: int
1338    :param delimiter:
1339    :type delimiter: str
1340    :param segment: Required.
1341    :type segment: ~azure.storage.blob.models.BlobHierarchyListSegment
1342    :param next_marker:
1343    :type next_marker: str
1344    """
1345
1346    _validation = {
1347        'service_endpoint': {'required': True},
1348        'container_name': {'required': True},
1349        'segment': {'required': True},
1350    }
1351
1352    _attribute_map = {
1353        'service_endpoint': {'key': 'ServiceEndpoint', 'type': 'str', 'xml': {'attr': True}},
1354        'container_name': {'key': 'ContainerName', 'type': 'str', 'xml': {'attr': True}},
1355        'prefix': {'key': 'Prefix', 'type': 'str'},
1356        'marker': {'key': 'Marker', 'type': 'str'},
1357        'max_results': {'key': 'MaxResults', 'type': 'int'},
1358        'delimiter': {'key': 'Delimiter', 'type': 'str'},
1359        'segment': {'key': 'Segment', 'type': 'BlobHierarchyListSegment'},
1360        'next_marker': {'key': 'NextMarker', 'type': 'str'},
1361    }
1362    _xml_map = {
1363        'name': 'EnumerationResults'
1364    }
1365
1366    def __init__(
1367        self,
1368        **kwargs
1369    ):
1370        super(ListBlobsHierarchySegmentResponse, self).__init__(**kwargs)
1371        self.service_endpoint = kwargs['service_endpoint']
1372        self.container_name = kwargs['container_name']
1373        self.prefix = kwargs.get('prefix', None)
1374        self.marker = kwargs.get('marker', None)
1375        self.max_results = kwargs.get('max_results', None)
1376        self.delimiter = kwargs.get('delimiter', None)
1377        self.segment = kwargs['segment']
1378        self.next_marker = kwargs.get('next_marker', None)
1379
1380
1381class ListContainersSegmentResponse(msrest.serialization.Model):
1382    """An enumeration of containers.
1383
1384    All required parameters must be populated in order to send to Azure.
1385
1386    :param service_endpoint: Required.
1387    :type service_endpoint: str
1388    :param prefix:
1389    :type prefix: str
1390    :param marker:
1391    :type marker: str
1392    :param max_results:
1393    :type max_results: int
1394    :param container_items: Required.
1395    :type container_items: list[~azure.storage.blob.models.ContainerItem]
1396    :param next_marker:
1397    :type next_marker: str
1398    """
1399
1400    _validation = {
1401        'service_endpoint': {'required': True},
1402        'container_items': {'required': True},
1403    }
1404
1405    _attribute_map = {
1406        'service_endpoint': {'key': 'ServiceEndpoint', 'type': 'str', 'xml': {'attr': True}},
1407        'prefix': {'key': 'Prefix', 'type': 'str'},
1408        'marker': {'key': 'Marker', 'type': 'str'},
1409        'max_results': {'key': 'MaxResults', 'type': 'int'},
1410        'container_items': {'key': 'ContainerItems', 'type': '[ContainerItem]', 'xml': {'name': 'Containers', 'wrapped': True, 'itemsName': 'Container'}},
1411        'next_marker': {'key': 'NextMarker', 'type': 'str'},
1412    }
1413    _xml_map = {
1414        'name': 'EnumerationResults'
1415    }
1416
1417    def __init__(
1418        self,
1419        **kwargs
1420    ):
1421        super(ListContainersSegmentResponse, self).__init__(**kwargs)
1422        self.service_endpoint = kwargs['service_endpoint']
1423        self.prefix = kwargs.get('prefix', None)
1424        self.marker = kwargs.get('marker', None)
1425        self.max_results = kwargs.get('max_results', None)
1426        self.container_items = kwargs['container_items']
1427        self.next_marker = kwargs.get('next_marker', None)
1428
1429
1430class Logging(msrest.serialization.Model):
1431    """Azure Analytics Logging settings.
1432
1433    All required parameters must be populated in order to send to Azure.
1434
1435    :param version: Required. The version of Storage Analytics to configure.
1436    :type version: str
1437    :param delete: Required. Indicates whether all delete requests should be logged.
1438    :type delete: bool
1439    :param read: Required. Indicates whether all read requests should be logged.
1440    :type read: bool
1441    :param write: Required. Indicates whether all write requests should be logged.
1442    :type write: bool
1443    :param retention_policy: Required. the retention policy which determines how long the
1444     associated data should persist.
1445    :type retention_policy: ~azure.storage.blob.models.RetentionPolicy
1446    """
1447
1448    _validation = {
1449        'version': {'required': True},
1450        'delete': {'required': True},
1451        'read': {'required': True},
1452        'write': {'required': True},
1453        'retention_policy': {'required': True},
1454    }
1455
1456    _attribute_map = {
1457        'version': {'key': 'Version', 'type': 'str'},
1458        'delete': {'key': 'Delete', 'type': 'bool'},
1459        'read': {'key': 'Read', 'type': 'bool'},
1460        'write': {'key': 'Write', 'type': 'bool'},
1461        'retention_policy': {'key': 'RetentionPolicy', 'type': 'RetentionPolicy'},
1462    }
1463
1464    def __init__(
1465        self,
1466        **kwargs
1467    ):
1468        super(Logging, self).__init__(**kwargs)
1469        self.version = kwargs['version']
1470        self.delete = kwargs['delete']
1471        self.read = kwargs['read']
1472        self.write = kwargs['write']
1473        self.retention_policy = kwargs['retention_policy']
1474
1475
1476class Metrics(msrest.serialization.Model):
1477    """a summary of request statistics grouped by API in hour or minute aggregates for blobs.
1478
1479    All required parameters must be populated in order to send to Azure.
1480
1481    :param version: The version of Storage Analytics to configure.
1482    :type version: str
1483    :param enabled: Required. Indicates whether metrics are enabled for the Blob service.
1484    :type enabled: bool
1485    :param include_apis: Indicates whether metrics should generate summary statistics for called
1486     API operations.
1487    :type include_apis: bool
1488    :param retention_policy: the retention policy which determines how long the associated data
1489     should persist.
1490    :type retention_policy: ~azure.storage.blob.models.RetentionPolicy
1491    """
1492
1493    _validation = {
1494        'enabled': {'required': True},
1495    }
1496
1497    _attribute_map = {
1498        'version': {'key': 'Version', 'type': 'str'},
1499        'enabled': {'key': 'Enabled', 'type': 'bool'},
1500        'include_apis': {'key': 'IncludeAPIs', 'type': 'bool'},
1501        'retention_policy': {'key': 'RetentionPolicy', 'type': 'RetentionPolicy'},
1502    }
1503
1504    def __init__(
1505        self,
1506        **kwargs
1507    ):
1508        super(Metrics, self).__init__(**kwargs)
1509        self.version = kwargs.get('version', None)
1510        self.enabled = kwargs['enabled']
1511        self.include_apis = kwargs.get('include_apis', None)
1512        self.retention_policy = kwargs.get('retention_policy', None)
1513
1514
1515class ModifiedAccessConditions(msrest.serialization.Model):
1516    """Parameter group.
1517
1518    :param if_modified_since: Specify this header value to operate only on a blob if it has been
1519     modified since the specified date/time.
1520    :type if_modified_since: ~datetime.datetime
1521    :param if_unmodified_since: Specify this header value to operate only on a blob if it has not
1522     been modified since the specified date/time.
1523    :type if_unmodified_since: ~datetime.datetime
1524    :param if_match: Specify an ETag value to operate only on blobs with a matching value.
1525    :type if_match: str
1526    :param if_none_match: Specify an ETag value to operate only on blobs without a matching value.
1527    :type if_none_match: str
1528    :param if_tags: Specify a SQL where clause on blob tags to operate only on blobs with a
1529     matching value.
1530    :type if_tags: str
1531    """
1532
1533    _attribute_map = {
1534        'if_modified_since': {'key': 'ifModifiedSince', 'type': 'rfc-1123'},
1535        'if_unmodified_since': {'key': 'ifUnmodifiedSince', 'type': 'rfc-1123'},
1536        'if_match': {'key': 'ifMatch', 'type': 'str'},
1537        'if_none_match': {'key': 'ifNoneMatch', 'type': 'str'},
1538        'if_tags': {'key': 'ifTags', 'type': 'str'},
1539    }
1540
1541    def __init__(
1542        self,
1543        **kwargs
1544    ):
1545        super(ModifiedAccessConditions, self).__init__(**kwargs)
1546        self.if_modified_since = kwargs.get('if_modified_since', None)
1547        self.if_unmodified_since = kwargs.get('if_unmodified_since', None)
1548        self.if_match = kwargs.get('if_match', None)
1549        self.if_none_match = kwargs.get('if_none_match', None)
1550        self.if_tags = kwargs.get('if_tags', None)
1551
1552
1553class PageList(msrest.serialization.Model):
1554    """the list of pages.
1555
1556    :param page_range:
1557    :type page_range: list[~azure.storage.blob.models.PageRange]
1558    :param clear_range:
1559    :type clear_range: list[~azure.storage.blob.models.ClearRange]
1560    """
1561
1562    _attribute_map = {
1563        'page_range': {'key': 'PageRange', 'type': '[PageRange]'},
1564        'clear_range': {'key': 'ClearRange', 'type': '[ClearRange]'},
1565    }
1566
1567    def __init__(
1568        self,
1569        **kwargs
1570    ):
1571        super(PageList, self).__init__(**kwargs)
1572        self.page_range = kwargs.get('page_range', None)
1573        self.clear_range = kwargs.get('clear_range', None)
1574
1575
1576class PageRange(msrest.serialization.Model):
1577    """PageRange.
1578
1579    All required parameters must be populated in order to send to Azure.
1580
1581    :param start: Required.
1582    :type start: long
1583    :param end: Required.
1584    :type end: long
1585    """
1586
1587    _validation = {
1588        'start': {'required': True},
1589        'end': {'required': True},
1590    }
1591
1592    _attribute_map = {
1593        'start': {'key': 'Start', 'type': 'long', 'xml': {'name': 'Start'}},
1594        'end': {'key': 'End', 'type': 'long', 'xml': {'name': 'End'}},
1595    }
1596    _xml_map = {
1597        'name': 'PageRange'
1598    }
1599
1600    def __init__(
1601        self,
1602        **kwargs
1603    ):
1604        super(PageRange, self).__init__(**kwargs)
1605        self.start = kwargs['start']
1606        self.end = kwargs['end']
1607
1608
1609class QueryFormat(msrest.serialization.Model):
1610    """QueryFormat.
1611
1612    :param type: The quick query format type. Possible values include: "delimited", "json",
1613     "arrow".
1614    :type type: str or ~azure.storage.blob.models.QueryFormatType
1615    :param delimited_text_configuration: delimited text configuration.
1616    :type delimited_text_configuration: ~azure.storage.blob.models.DelimitedTextConfiguration
1617    :param json_text_configuration: json text configuration.
1618    :type json_text_configuration: ~azure.storage.blob.models.JsonTextConfiguration
1619    :param arrow_configuration: arrow configuration.
1620    :type arrow_configuration: ~azure.storage.blob.models.ArrowConfiguration
1621    """
1622
1623    _attribute_map = {
1624        'type': {'key': 'Type', 'type': 'str', 'xml': {'name': 'Type'}},
1625        'delimited_text_configuration': {'key': 'DelimitedTextConfiguration', 'type': 'DelimitedTextConfiguration'},
1626        'json_text_configuration': {'key': 'JsonTextConfiguration', 'type': 'JsonTextConfiguration'},
1627        'arrow_configuration': {'key': 'ArrowConfiguration', 'type': 'ArrowConfiguration'},
1628    }
1629
1630    def __init__(
1631        self,
1632        **kwargs
1633    ):
1634        super(QueryFormat, self).__init__(**kwargs)
1635        self.type = kwargs.get('type', None)
1636        self.delimited_text_configuration = kwargs.get('delimited_text_configuration', None)
1637        self.json_text_configuration = kwargs.get('json_text_configuration', None)
1638        self.arrow_configuration = kwargs.get('arrow_configuration', None)
1639
1640
1641class QueryRequest(msrest.serialization.Model):
1642    """the quick query body.
1643
1644    Variables are only populated by the server, and will be ignored when sending a request.
1645
1646    All required parameters must be populated in order to send to Azure.
1647
1648    :ivar query_type: Required. the query type. Default value: "SQL".
1649    :vartype query_type: str
1650    :param expression: Required. a query statement.
1651    :type expression: str
1652    :param input_serialization:
1653    :type input_serialization: ~azure.storage.blob.models.QuerySerialization
1654    :param output_serialization:
1655    :type output_serialization: ~azure.storage.blob.models.QuerySerialization
1656    """
1657
1658    _validation = {
1659        'query_type': {'required': True, 'constant': True},
1660        'expression': {'required': True},
1661    }
1662
1663    _attribute_map = {
1664        'query_type': {'key': 'QueryType', 'type': 'str', 'xml': {'name': 'QueryType'}},
1665        'expression': {'key': 'Expression', 'type': 'str', 'xml': {'name': 'Expression'}},
1666        'input_serialization': {'key': 'InputSerialization', 'type': 'QuerySerialization'},
1667        'output_serialization': {'key': 'OutputSerialization', 'type': 'QuerySerialization'},
1668    }
1669    _xml_map = {
1670        'name': 'QueryRequest'
1671    }
1672
1673    query_type = "SQL"
1674
1675    def __init__(
1676        self,
1677        **kwargs
1678    ):
1679        super(QueryRequest, self).__init__(**kwargs)
1680        self.expression = kwargs['expression']
1681        self.input_serialization = kwargs.get('input_serialization', None)
1682        self.output_serialization = kwargs.get('output_serialization', None)
1683
1684
1685class QuerySerialization(msrest.serialization.Model):
1686    """QuerySerialization.
1687
1688    All required parameters must be populated in order to send to Azure.
1689
1690    :param format: Required.
1691    :type format: ~azure.storage.blob.models.QueryFormat
1692    """
1693
1694    _validation = {
1695        'format': {'required': True},
1696    }
1697
1698    _attribute_map = {
1699        'format': {'key': 'Format', 'type': 'QueryFormat'},
1700    }
1701
1702    def __init__(
1703        self,
1704        **kwargs
1705    ):
1706        super(QuerySerialization, self).__init__(**kwargs)
1707        self.format = kwargs['format']
1708
1709
1710class RetentionPolicy(msrest.serialization.Model):
1711    """the retention policy which determines how long the associated data should persist.
1712
1713    All required parameters must be populated in order to send to Azure.
1714
1715    :param enabled: Required. Indicates whether a retention policy is enabled for the storage
1716     service.
1717    :type enabled: bool
1718    :param days: Indicates the number of days that metrics or logging or soft-deleted data should
1719     be retained. All data older than this value will be deleted.
1720    :type days: int
1721    :param allow_permanent_delete: Indicates whether permanent delete is allowed on this storage
1722     account.
1723    :type allow_permanent_delete: bool
1724    """
1725
1726    _validation = {
1727        'enabled': {'required': True},
1728        'days': {'minimum': 1},
1729    }
1730
1731    _attribute_map = {
1732        'enabled': {'key': 'Enabled', 'type': 'bool'},
1733        'days': {'key': 'Days', 'type': 'int'},
1734        'allow_permanent_delete': {'key': 'AllowPermanentDelete', 'type': 'bool'},
1735    }
1736
1737    def __init__(
1738        self,
1739        **kwargs
1740    ):
1741        super(RetentionPolicy, self).__init__(**kwargs)
1742        self.enabled = kwargs['enabled']
1743        self.days = kwargs.get('days', None)
1744        self.allow_permanent_delete = kwargs.get('allow_permanent_delete', None)
1745
1746
1747class SequenceNumberAccessConditions(msrest.serialization.Model):
1748    """Parameter group.
1749
1750    :param if_sequence_number_less_than_or_equal_to: Specify this header value to operate only on a
1751     blob if it has a sequence number less than or equal to the specified.
1752    :type if_sequence_number_less_than_or_equal_to: long
1753    :param if_sequence_number_less_than: Specify this header value to operate only on a blob if it
1754     has a sequence number less than the specified.
1755    :type if_sequence_number_less_than: long
1756    :param if_sequence_number_equal_to: Specify this header value to operate only on a blob if it
1757     has the specified sequence number.
1758    :type if_sequence_number_equal_to: long
1759    """
1760
1761    _attribute_map = {
1762        'if_sequence_number_less_than_or_equal_to': {'key': 'ifSequenceNumberLessThanOrEqualTo', 'type': 'long'},
1763        'if_sequence_number_less_than': {'key': 'ifSequenceNumberLessThan', 'type': 'long'},
1764        'if_sequence_number_equal_to': {'key': 'ifSequenceNumberEqualTo', 'type': 'long'},
1765    }
1766
1767    def __init__(
1768        self,
1769        **kwargs
1770    ):
1771        super(SequenceNumberAccessConditions, self).__init__(**kwargs)
1772        self.if_sequence_number_less_than_or_equal_to = kwargs.get('if_sequence_number_less_than_or_equal_to', None)
1773        self.if_sequence_number_less_than = kwargs.get('if_sequence_number_less_than', None)
1774        self.if_sequence_number_equal_to = kwargs.get('if_sequence_number_equal_to', None)
1775
1776
1777class SignedIdentifier(msrest.serialization.Model):
1778    """signed identifier.
1779
1780    All required parameters must be populated in order to send to Azure.
1781
1782    :param id: Required. a unique id.
1783    :type id: str
1784    :param access_policy: An Access policy.
1785    :type access_policy: ~azure.storage.blob.models.AccessPolicy
1786    """
1787
1788    _validation = {
1789        'id': {'required': True},
1790    }
1791
1792    _attribute_map = {
1793        'id': {'key': 'Id', 'type': 'str'},
1794        'access_policy': {'key': 'AccessPolicy', 'type': 'AccessPolicy'},
1795    }
1796    _xml_map = {
1797        'name': 'SignedIdentifier'
1798    }
1799
1800    def __init__(
1801        self,
1802        **kwargs
1803    ):
1804        super(SignedIdentifier, self).__init__(**kwargs)
1805        self.id = kwargs['id']
1806        self.access_policy = kwargs.get('access_policy', None)
1807
1808
1809class SourceModifiedAccessConditions(msrest.serialization.Model):
1810    """Parameter group.
1811
1812    :param source_if_modified_since: Specify this header value to operate only on a blob if it has
1813     been modified since the specified date/time.
1814    :type source_if_modified_since: ~datetime.datetime
1815    :param source_if_unmodified_since: Specify this header value to operate only on a blob if it
1816     has not been modified since the specified date/time.
1817    :type source_if_unmodified_since: ~datetime.datetime
1818    :param source_if_match: Specify an ETag value to operate only on blobs with a matching value.
1819    :type source_if_match: str
1820    :param source_if_none_match: Specify an ETag value to operate only on blobs without a matching
1821     value.
1822    :type source_if_none_match: str
1823    :param source_if_tags: Specify a SQL where clause on blob tags to operate only on blobs with a
1824     matching value.
1825    :type source_if_tags: str
1826    """
1827
1828    _attribute_map = {
1829        'source_if_modified_since': {'key': 'sourceIfModifiedSince', 'type': 'rfc-1123'},
1830        'source_if_unmodified_since': {'key': 'sourceIfUnmodifiedSince', 'type': 'rfc-1123'},
1831        'source_if_match': {'key': 'sourceIfMatch', 'type': 'str'},
1832        'source_if_none_match': {'key': 'sourceIfNoneMatch', 'type': 'str'},
1833        'source_if_tags': {'key': 'sourceIfTags', 'type': 'str'},
1834    }
1835
1836    def __init__(
1837        self,
1838        **kwargs
1839    ):
1840        super(SourceModifiedAccessConditions, self).__init__(**kwargs)
1841        self.source_if_modified_since = kwargs.get('source_if_modified_since', None)
1842        self.source_if_unmodified_since = kwargs.get('source_if_unmodified_since', None)
1843        self.source_if_match = kwargs.get('source_if_match', None)
1844        self.source_if_none_match = kwargs.get('source_if_none_match', None)
1845        self.source_if_tags = kwargs.get('source_if_tags', None)
1846
1847
1848class StaticWebsite(msrest.serialization.Model):
1849    """The properties that enable an account to host a static website.
1850
1851    All required parameters must be populated in order to send to Azure.
1852
1853    :param enabled: Required. Indicates whether this account is hosting a static website.
1854    :type enabled: bool
1855    :param index_document: The default name of the index page under each directory.
1856    :type index_document: str
1857    :param error_document404_path: The absolute path of the custom 404 page.
1858    :type error_document404_path: str
1859    :param default_index_document_path: Absolute path of the default index page.
1860    :type default_index_document_path: str
1861    """
1862
1863    _validation = {
1864        'enabled': {'required': True},
1865    }
1866
1867    _attribute_map = {
1868        'enabled': {'key': 'Enabled', 'type': 'bool'},
1869        'index_document': {'key': 'IndexDocument', 'type': 'str'},
1870        'error_document404_path': {'key': 'ErrorDocument404Path', 'type': 'str'},
1871        'default_index_document_path': {'key': 'DefaultIndexDocumentPath', 'type': 'str'},
1872    }
1873
1874    def __init__(
1875        self,
1876        **kwargs
1877    ):
1878        super(StaticWebsite, self).__init__(**kwargs)
1879        self.enabled = kwargs['enabled']
1880        self.index_document = kwargs.get('index_document', None)
1881        self.error_document404_path = kwargs.get('error_document404_path', None)
1882        self.default_index_document_path = kwargs.get('default_index_document_path', None)
1883
1884
1885class StorageError(msrest.serialization.Model):
1886    """StorageError.
1887
1888    :param message:
1889    :type message: str
1890    """
1891
1892    _attribute_map = {
1893        'message': {'key': 'Message', 'type': 'str'},
1894    }
1895
1896    def __init__(
1897        self,
1898        **kwargs
1899    ):
1900        super(StorageError, self).__init__(**kwargs)
1901        self.message = kwargs.get('message', None)
1902
1903
1904class StorageServiceProperties(msrest.serialization.Model):
1905    """Storage Service Properties.
1906
1907    :param logging: Azure Analytics Logging settings.
1908    :type logging: ~azure.storage.blob.models.Logging
1909    :param hour_metrics: a summary of request statistics grouped by API in hour or minute
1910     aggregates for blobs.
1911    :type hour_metrics: ~azure.storage.blob.models.Metrics
1912    :param minute_metrics: a summary of request statistics grouped by API in hour or minute
1913     aggregates for blobs.
1914    :type minute_metrics: ~azure.storage.blob.models.Metrics
1915    :param cors: The set of CORS rules.
1916    :type cors: list[~azure.storage.blob.models.CorsRule]
1917    :param default_service_version: The default version to use for requests to the Blob service if
1918     an incoming request's version is not specified. Possible values include version 2008-10-27 and
1919     all more recent versions.
1920    :type default_service_version: str
1921    :param delete_retention_policy: the retention policy which determines how long the associated
1922     data should persist.
1923    :type delete_retention_policy: ~azure.storage.blob.models.RetentionPolicy
1924    :param static_website: The properties that enable an account to host a static website.
1925    :type static_website: ~azure.storage.blob.models.StaticWebsite
1926    """
1927
1928    _attribute_map = {
1929        'logging': {'key': 'Logging', 'type': 'Logging'},
1930        'hour_metrics': {'key': 'HourMetrics', 'type': 'Metrics'},
1931        'minute_metrics': {'key': 'MinuteMetrics', 'type': 'Metrics'},
1932        'cors': {'key': 'Cors', 'type': '[CorsRule]', 'xml': {'wrapped': True}},
1933        'default_service_version': {'key': 'DefaultServiceVersion', 'type': 'str'},
1934        'delete_retention_policy': {'key': 'DeleteRetentionPolicy', 'type': 'RetentionPolicy'},
1935        'static_website': {'key': 'StaticWebsite', 'type': 'StaticWebsite'},
1936    }
1937
1938    def __init__(
1939        self,
1940        **kwargs
1941    ):
1942        super(StorageServiceProperties, self).__init__(**kwargs)
1943        self.logging = kwargs.get('logging', None)
1944        self.hour_metrics = kwargs.get('hour_metrics', None)
1945        self.minute_metrics = kwargs.get('minute_metrics', None)
1946        self.cors = kwargs.get('cors', None)
1947        self.default_service_version = kwargs.get('default_service_version', None)
1948        self.delete_retention_policy = kwargs.get('delete_retention_policy', None)
1949        self.static_website = kwargs.get('static_website', None)
1950
1951
1952class StorageServiceStats(msrest.serialization.Model):
1953    """Stats for the storage service.
1954
1955    :param geo_replication: Geo-Replication information for the Secondary Storage Service.
1956    :type geo_replication: ~azure.storage.blob.models.GeoReplication
1957    """
1958
1959    _attribute_map = {
1960        'geo_replication': {'key': 'GeoReplication', 'type': 'GeoReplication'},
1961    }
1962
1963    def __init__(
1964        self,
1965        **kwargs
1966    ):
1967        super(StorageServiceStats, self).__init__(**kwargs)
1968        self.geo_replication = kwargs.get('geo_replication', None)
1969
1970
1971class UserDelegationKey(msrest.serialization.Model):
1972    """A user delegation key.
1973
1974    All required parameters must be populated in order to send to Azure.
1975
1976    :param signed_oid: Required. The Azure Active Directory object ID in GUID format.
1977    :type signed_oid: str
1978    :param signed_tid: Required. The Azure Active Directory tenant ID in GUID format.
1979    :type signed_tid: str
1980    :param signed_start: Required. The date-time the key is active.
1981    :type signed_start: ~datetime.datetime
1982    :param signed_expiry: Required. The date-time the key expires.
1983    :type signed_expiry: ~datetime.datetime
1984    :param signed_service: Required. Abbreviation of the Azure Storage service that accepts the
1985     key.
1986    :type signed_service: str
1987    :param signed_version: Required. The service version that created the key.
1988    :type signed_version: str
1989    :param value: Required. The key as a base64 string.
1990    :type value: str
1991    """
1992
1993    _validation = {
1994        'signed_oid': {'required': True},
1995        'signed_tid': {'required': True},
1996        'signed_start': {'required': True},
1997        'signed_expiry': {'required': True},
1998        'signed_service': {'required': True},
1999        'signed_version': {'required': True},
2000        'value': {'required': True},
2001    }
2002
2003    _attribute_map = {
2004        'signed_oid': {'key': 'SignedOid', 'type': 'str'},
2005        'signed_tid': {'key': 'SignedTid', 'type': 'str'},
2006        'signed_start': {'key': 'SignedStart', 'type': 'iso-8601'},
2007        'signed_expiry': {'key': 'SignedExpiry', 'type': 'iso-8601'},
2008        'signed_service': {'key': 'SignedService', 'type': 'str'},
2009        'signed_version': {'key': 'SignedVersion', 'type': 'str'},
2010        'value': {'key': 'Value', 'type': 'str'},
2011    }
2012
2013    def __init__(
2014        self,
2015        **kwargs
2016    ):
2017        super(UserDelegationKey, self).__init__(**kwargs)
2018        self.signed_oid = kwargs['signed_oid']
2019        self.signed_tid = kwargs['signed_tid']
2020        self.signed_start = kwargs['signed_start']
2021        self.signed_expiry = kwargs['signed_expiry']
2022        self.signed_service = kwargs['signed_service']
2023        self.signed_version = kwargs['signed_version']
2024        self.value = kwargs['value']
2025