azure_storage_blob/generated/models/
pub_models.rs

1// Copyright (c) Microsoft Corporation. All rights reserved.
2//
3// Licensed under the MIT License. See License.txt in the project root for license information.
4// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT.
5
6use super::{
7    models_serde,
8    xml_helpers::{
9        Blob_tag_setTag, BlobsBlob, Committed_blocksBlock, Container_itemsContainer, CorsCorsRule,
10        SchemaField, Uncommitted_blocksBlock,
11    },
12    AccessTier, ArchiveStatus, BlobImmutabilityPolicyMode, BlobType, CopyStatus,
13    GeoReplicationStatusType, LeaseDuration, LeaseState, LeaseStatus, PublicAccessType,
14    QueryRequestType, QueryType, RehydratePriority,
15};
16use azure_core::{
17    base64::{deserialize, serialize},
18    fmt::SafeDebug,
19    time::OffsetDateTime,
20};
21use serde::{Deserialize, Serialize};
22use serde_json::Value;
23use std::collections::HashMap;
24
25/// Represents an access policy.
26#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
27pub struct AccessPolicy {
28    /// The date-time the policy expires.
29    #[serde(
30        default,
31        rename = "Expiry",
32        skip_serializing_if = "Option::is_none",
33        with = "azure_core::time::rfc7231::option"
34    )]
35    pub expiry: Option<OffsetDateTime>,
36
37    /// The permissions for acl the policy.
38    #[serde(rename = "Permission", skip_serializing_if = "Option::is_none")]
39    pub permission: Option<String>,
40
41    /// The date-time the policy is active.
42    #[serde(
43        default,
44        rename = "Start",
45        skip_serializing_if = "Option::is_none",
46        with = "azure_core::time::rfc7231::option"
47    )]
48    pub start: Option<OffsetDateTime>,
49}
50
51/// Contains results for `AppendBlobClient::append_block_from_url()`
52#[derive(SafeDebug)]
53pub struct AppendBlobClientAppendBlockFromUrlResult;
54
55/// Contains results for `AppendBlobClient::append_block()`
56#[derive(SafeDebug)]
57pub struct AppendBlobClientAppendBlockResult;
58
59/// Contains results for `AppendBlobClient::create()`
60#[derive(SafeDebug)]
61pub struct AppendBlobClientCreateResult;
62
63/// Contains results for `AppendBlobClient::seal()`
64#[derive(SafeDebug)]
65pub struct AppendBlobClientSealResult;
66
67/// Represents the Apache Arrow configuration.
68#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
69pub struct ArrowConfiguration {
70    /// The Apache Arrow schema
71    #[serde(
72        default,
73        deserialize_with = "SchemaField::unwrap",
74        rename = "Schema",
75        serialize_with = "SchemaField::wrap",
76        skip_serializing_if = "Option::is_none"
77    )]
78    pub schema: Option<Vec<ArrowField>>,
79}
80
81/// Represents an Apache Arrow field.
82#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
83#[serde(rename = "Field")]
84pub struct ArrowField {
85    /// The arrow field name.
86    #[serde(rename = "Name", skip_serializing_if = "Option::is_none")]
87    pub name: Option<String>,
88
89    /// The arrow field precision.
90    #[serde(rename = "Precision", skip_serializing_if = "Option::is_none")]
91    pub precision: Option<i32>,
92
93    /// The arrow field scale.
94    #[serde(rename = "Scale", skip_serializing_if = "Option::is_none")]
95    pub scale: Option<i32>,
96
97    /// The arrow field type.
98    #[serde(rename = "Type", skip_serializing_if = "Option::is_none")]
99    pub type_prop: Option<String>,
100}
101
102/// Contains results for `BlobClient::abort_copy_from_url()`
103#[derive(SafeDebug)]
104pub struct BlobClientAbortCopyFromUrlResult;
105
106/// Contains results for `BlobClient::acquire_lease()`
107#[derive(SafeDebug)]
108pub struct BlobClientAcquireLeaseResult;
109
110/// Contains results for `BlobClient::break_lease()`
111#[derive(SafeDebug)]
112pub struct BlobClientBreakLeaseResult;
113
114/// Contains results for `BlobClient::change_lease()`
115#[derive(SafeDebug)]
116pub struct BlobClientChangeLeaseResult;
117
118/// Contains results for `BlobClient::copy_from_url()`
119#[derive(SafeDebug)]
120pub struct BlobClientCopyFromUrlResult;
121
122/// Contains results for `BlobClient::create_snapshot()`
123#[derive(SafeDebug)]
124pub struct BlobClientCreateSnapshotResult;
125
126/// Contains results for `BlobClient::delete_immutability_policy()`
127#[derive(SafeDebug)]
128pub struct BlobClientDeleteImmutabilityPolicyResult;
129
130/// Contains results for `BlobClient::download()`
131#[derive(SafeDebug)]
132pub struct BlobClientDownloadResult;
133
134/// Contains results for `BlobClient::get_account_info()`
135#[derive(SafeDebug)]
136pub struct BlobClientGetAccountInfoResult;
137
138/// Contains results for `BlobClient::get_properties()`
139#[derive(SafeDebug)]
140pub struct BlobClientGetPropertiesResult;
141
142/// Contains results for `BlobClient::release_lease()`
143#[derive(SafeDebug)]
144pub struct BlobClientReleaseLeaseResult;
145
146/// Contains results for `BlobClient::renew_lease()`
147#[derive(SafeDebug)]
148pub struct BlobClientRenewLeaseResult;
149
150/// Contains results for `BlobClient::set_expiry()`
151#[derive(SafeDebug)]
152pub struct BlobClientSetExpiryResult;
153
154/// Contains results for `BlobClient::set_immutability_policy()`
155#[derive(SafeDebug)]
156pub struct BlobClientSetImmutabilityPolicyResult;
157
158/// Contains results for `BlobClient::set_legal_hold()`
159#[derive(SafeDebug)]
160pub struct BlobClientSetLegalHoldResult;
161
162/// Contains results for `BlobClient::start_copy_from_url()`
163#[derive(SafeDebug)]
164pub struct BlobClientStartCopyFromUrlResult;
165
166/// Contains results for `BlobClient::undelete()`
167#[derive(SafeDebug)]
168pub struct BlobClientUndeleteResult;
169
170/// Contains results for `BlobContainerClient::acquire_lease()`
171#[derive(SafeDebug)]
172pub struct BlobContainerClientAcquireLeaseResult;
173
174/// Contains results for `BlobContainerClient::break_lease()`
175#[derive(SafeDebug)]
176pub struct BlobContainerClientBreakLeaseResult;
177
178/// Contains results for `BlobContainerClient::change_lease()`
179#[derive(SafeDebug)]
180pub struct BlobContainerClientChangeLeaseResult;
181
182/// Contains results for `BlobContainerClient::get_account_info()`
183#[derive(SafeDebug)]
184pub struct BlobContainerClientGetAccountInfoResult;
185
186/// Contains results for `BlobContainerClient::get_properties()`
187#[derive(SafeDebug)]
188pub struct BlobContainerClientGetPropertiesResult;
189
190/// Contains results for `BlobContainerClient::release_lease()`
191#[derive(SafeDebug)]
192pub struct BlobContainerClientReleaseLeaseResult;
193
194/// Contains results for `BlobContainerClient::rename()`
195#[derive(SafeDebug)]
196pub struct BlobContainerClientRenameResult;
197
198/// Contains results for `BlobContainerClient::renew_lease()`
199#[derive(SafeDebug)]
200pub struct BlobContainerClientRenewLeaseResult;
201
202/// Contains results for `BlobContainerClient::restore()`
203#[derive(SafeDebug)]
204pub struct BlobContainerClientRestoreResult;
205
206/// Contains results for `BlobContainerClient::set_access_policy()`
207#[derive(SafeDebug)]
208pub struct BlobContainerClientSetAccessPolicyResult;
209
210/// The blob flat list segment.
211#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
212#[non_exhaustive]
213pub struct BlobFlatListSegment {
214    /// The blob items.
215    #[serde(default, rename = "Blob")]
216    pub blob_items: Vec<BlobItemInternal>,
217}
218
219/// Represents an array of blobs.
220#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
221#[non_exhaustive]
222pub struct BlobHierarchyListSegment {
223    /// The blob items
224    #[serde(default, rename = "Blob")]
225    pub blob_items: Vec<BlobItemInternal>,
226
227    /// The blob prefixes.
228    #[serde(rename = "BlobPrefix", skip_serializing_if = "Option::is_none")]
229    pub blob_prefixes: Option<Vec<BlobPrefix>>,
230}
231
232/// An Azure Storage Blob
233#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
234#[non_exhaustive]
235#[serde(rename = "Blob")]
236pub struct BlobItemInternal {
237    /// The tags of the blob.
238    #[serde(rename = "BlobTags", skip_serializing_if = "Option::is_none")]
239    pub blob_tags: Option<BlobTags>,
240
241    /// Whether the blob is deleted.
242    #[serde(rename = "Deleted", skip_serializing_if = "Option::is_none")]
243    pub deleted: Option<bool>,
244
245    /// Whether the blog has versions only.
246    #[serde(rename = "HasVersionsOnly", skip_serializing_if = "Option::is_none")]
247    pub has_versions_only: Option<bool>,
248
249    /// Whether the blob is the current version.
250    #[serde(rename = "IsCurrentVersion", skip_serializing_if = "Option::is_none")]
251    pub is_current_version: Option<bool>,
252
253    /// The metadata of the blob.
254    #[serde(rename = "Metadata", skip_serializing_if = "Option::is_none")]
255    pub metadata: Option<BlobMetadata>,
256
257    /// The name of the blob.
258    #[serde(rename = "Name", skip_serializing_if = "Option::is_none")]
259    pub name: Option<BlobName>,
260
261    /// The object replication metadata of the blob.
262    #[serde(rename = "OrMetadata", skip_serializing_if = "Option::is_none")]
263    pub object_replication_metadata: Option<ObjectReplicationMetadata>,
264
265    /// The properties of the blob.
266    #[serde(rename = "Properties", skip_serializing_if = "Option::is_none")]
267    pub properties: Option<BlobPropertiesInternal>,
268
269    /// The snapshot of the blob.
270    #[serde(rename = "Snapshot", skip_serializing_if = "Option::is_none")]
271    pub snapshot: Option<String>,
272
273    /// The version id of the blob.
274    #[serde(rename = "VersionId", skip_serializing_if = "Option::is_none")]
275    pub version_id: Option<String>,
276}
277
278/// The blob metadata.
279#[derive(Clone, Default, SafeDebug)]
280#[non_exhaustive]
281pub struct BlobMetadata {
282    /// contains unnamed additional properties
283    pub additional_properties: Option<HashMap<String, String>>,
284
285    /// Whether the blob metadata is encrypted.
286    pub encrypted: Option<String>,
287}
288
289/// Represents a blob name.
290#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
291#[non_exhaustive]
292pub struct BlobName {
293    /// The blob name.
294    #[serde(rename = "$text", skip_serializing_if = "Option::is_none")]
295    pub content: Option<String>,
296
297    /// Whether the blob name is encoded.
298    #[serde(rename = "@Encoded", skip_serializing_if = "Option::is_none")]
299    pub encoded: Option<bool>,
300}
301
302/// Represents a blob prefix.
303#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
304#[non_exhaustive]
305pub struct BlobPrefix {
306    /// The blob name.
307    #[serde(rename = "Name", skip_serializing_if = "Option::is_none")]
308    pub name: Option<BlobName>,
309}
310
311/// The properties of a blob.
312#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
313#[non_exhaustive]
314#[serde(rename = "Properties")]
315pub struct BlobPropertiesInternal {
316    /// The access tier of the blob.
317    #[serde(rename = "AccessTier", skip_serializing_if = "Option::is_none")]
318    pub access_tier: Option<AccessTier>,
319
320    /// The access tier change time of the blob.
321    #[serde(
322        default,
323        rename = "AccessTierChangeTime",
324        skip_serializing_if = "Option::is_none",
325        with = "azure_core::time::rfc7231::option"
326    )]
327    pub access_tier_change_time: Option<OffsetDateTime>,
328
329    /// Whether the access tier is inferred.
330    #[serde(rename = "AccessTierInferred", skip_serializing_if = "Option::is_none")]
331    pub access_tier_inferred: Option<bool>,
332
333    /// The archive status of the blob.
334    #[serde(rename = "ArchiveStatus", skip_serializing_if = "Option::is_none")]
335    pub archive_status: Option<ArchiveStatus>,
336
337    /// The sequence number of the blob.
338    #[serde(
339        rename = "x-ms-blob-sequence-number",
340        skip_serializing_if = "Option::is_none"
341    )]
342    pub blob_sequence_number: Option<i64>,
343
344    /// The blob type.
345    #[serde(rename = "BlobType", skip_serializing_if = "Option::is_none")]
346    pub blob_type: Option<BlobType>,
347
348    /// The cache control of the blob.
349    #[serde(rename = "Cache-Control", skip_serializing_if = "Option::is_none")]
350    pub cache_control: Option<String>,
351
352    /// The content disposition of the blob.
353    #[serde(
354        rename = "Content-Disposition",
355        skip_serializing_if = "Option::is_none"
356    )]
357    pub content_disposition: Option<String>,
358
359    /// The content encoding of the blob.
360    #[serde(rename = "Content-Encoding", skip_serializing_if = "Option::is_none")]
361    pub content_encoding: Option<String>,
362
363    /// The content language of the blob.
364    #[serde(rename = "Content-Language", skip_serializing_if = "Option::is_none")]
365    pub content_language: Option<String>,
366
367    /// The content length of the blob.
368    #[serde(rename = "Content-Length", skip_serializing_if = "Option::is_none")]
369    pub content_length: Option<u64>,
370
371    /// The content MD5 of the blob.
372    #[serde(
373        default,
374        deserialize_with = "deserialize",
375        rename = "Content-MD5",
376        serialize_with = "serialize",
377        skip_serializing_if = "Option::is_none"
378    )]
379    pub content_md5: Option<Vec<u8>>,
380
381    /// The content type of the blob.
382    #[serde(rename = "Content-Type", skip_serializing_if = "Option::is_none")]
383    pub content_type: Option<String>,
384
385    /// The copy completion time of the blob.
386    #[serde(
387        default,
388        rename = "CopyCompletionTime",
389        skip_serializing_if = "Option::is_none",
390        with = "azure_core::time::rfc7231::option"
391    )]
392    pub copy_completion_time: Option<OffsetDateTime>,
393
394    /// The copy ID of the blob.
395    #[serde(rename = "CopyId", skip_serializing_if = "Option::is_none")]
396    pub copy_id: Option<String>,
397
398    /// The copy progress of the blob.
399    #[serde(rename = "CopyProgress", skip_serializing_if = "Option::is_none")]
400    pub copy_progress: Option<String>,
401
402    /// The copy source of the blob.
403    #[serde(rename = "CopySource", skip_serializing_if = "Option::is_none")]
404    pub copy_source: Option<String>,
405
406    /// The copy status of the blob.
407    #[serde(rename = "CopyStatus", skip_serializing_if = "Option::is_none")]
408    pub copy_status: Option<CopyStatus>,
409
410    /// The copy status description of the blob.
411    #[serde(
412        rename = "CopyStatusDescription",
413        skip_serializing_if = "Option::is_none"
414    )]
415    pub copy_status_description: Option<String>,
416
417    /// The date-time the blob was created in RFC1123 format.
418    #[serde(
419        default,
420        rename = "Creation-Time",
421        skip_serializing_if = "Option::is_none",
422        with = "azure_core::time::rfc7231::option"
423    )]
424    pub creation_time: Option<OffsetDateTime>,
425
426    /// Customer provided key sha256
427    #[serde(
428        rename = "CustomerProvidedKeySha256",
429        skip_serializing_if = "Option::is_none"
430    )]
431    pub customer_provided_key_sha256: Option<String>,
432
433    /// The time the blob was deleted.
434    #[serde(
435        default,
436        rename = "DeletedTime",
437        skip_serializing_if = "Option::is_none",
438        with = "azure_core::time::rfc7231::option"
439    )]
440    pub deleted_time: Option<OffsetDateTime>,
441
442    /// The name of the destination snapshot.
443    #[serde(
444        rename = "DestinationSnapshot",
445        skip_serializing_if = "Option::is_none"
446    )]
447    pub destination_snapshot: Option<String>,
448
449    /// The encryption scope of the blob.
450    #[serde(rename = "EncryptionScope", skip_serializing_if = "Option::is_none")]
451    pub encryption_scope: Option<String>,
452
453    /// The blog ETag.
454    #[serde(rename = "Etag", skip_serializing_if = "Option::is_none")]
455    pub etag: Option<String>,
456
457    /// The expire time of the blob.
458    #[serde(
459        default,
460        rename = "Expiry-Time",
461        skip_serializing_if = "Option::is_none",
462        with = "azure_core::time::rfc7231::option"
463    )]
464    pub expires_on: Option<OffsetDateTime>,
465
466    /// The immutability policy until time of the blob.
467    #[serde(
468        default,
469        rename = "ImmutabilityPolicyUntilDate",
470        skip_serializing_if = "Option::is_none",
471        with = "azure_core::time::rfc7231::option"
472    )]
473    pub immutability_policy_expires_on: Option<OffsetDateTime>,
474
475    /// The immutability policy mode of the blob.
476    #[serde(
477        rename = "ImmutabilityPolicyMode",
478        skip_serializing_if = "Option::is_none"
479    )]
480    pub immutability_policy_mode: Option<BlobImmutabilityPolicyMode>,
481
482    /// Whether the blog is incremental copy.
483    #[serde(rename = "IncrementalCopy", skip_serializing_if = "Option::is_none")]
484    pub incremental_copy: Option<bool>,
485
486    /// Whether the blob is sealed.
487    #[serde(rename = "Sealed", skip_serializing_if = "Option::is_none")]
488    pub is_sealed: Option<bool>,
489
490    /// The last access time of the blob.
491    #[serde(
492        default,
493        rename = "LastAccessTime",
494        skip_serializing_if = "Option::is_none",
495        with = "azure_core::time::rfc7231::option"
496    )]
497    pub last_accessed_on: Option<OffsetDateTime>,
498
499    /// The date-time the blob was last modified in RFC1123 format.
500    #[serde(
501        default,
502        rename = "Last-Modified",
503        skip_serializing_if = "Option::is_none",
504        with = "azure_core::time::rfc7231::option"
505    )]
506    pub last_modified: Option<OffsetDateTime>,
507
508    /// The lease duration of the blob.
509    #[serde(rename = "LeaseDuration", skip_serializing_if = "Option::is_none")]
510    pub lease_duration: Option<LeaseDuration>,
511
512    /// The lease state of the blob.
513    #[serde(rename = "LeaseState", skip_serializing_if = "Option::is_none")]
514    pub lease_state: Option<LeaseState>,
515
516    /// The lease status of the blob.
517    #[serde(rename = "LeaseStatus", skip_serializing_if = "Option::is_none")]
518    pub lease_status: Option<LeaseStatus>,
519
520    /// Whether the blob is under legal hold.
521    #[serde(rename = "LegalHold", skip_serializing_if = "Option::is_none")]
522    pub legal_hold: Option<bool>,
523
524    /// The rehydrate priority of the blob.
525    #[serde(rename = "RehydratePriority", skip_serializing_if = "Option::is_none")]
526    pub rehydrate_priority: Option<RehydratePriority>,
527
528    /// The remaining retention days of the blob.
529    #[serde(
530        rename = "RemainingRetentionDays",
531        skip_serializing_if = "Option::is_none"
532    )]
533    pub remaining_retention_days: Option<i32>,
534
535    /// Whether the blog is encrypted on the server.
536    #[serde(rename = "ServerEncrypted", skip_serializing_if = "Option::is_none")]
537    pub server_encrypted: Option<bool>,
538
539    /// The number of tags for the blob.
540    #[serde(rename = "TagCount", skip_serializing_if = "Option::is_none")]
541    pub tag_count: Option<i32>,
542}
543
544/// Contains results for `BlobServiceClient::get_account_info()`
545#[derive(SafeDebug)]
546pub struct BlobServiceClientGetAccountInfoResult;
547
548/// The service properties.
549#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
550#[serde(rename = "StorageServiceProperties")]
551pub struct BlobServiceProperties {
552    /// The CORS properties.
553    #[serde(
554        default,
555        deserialize_with = "CorsCorsRule::unwrap",
556        rename = "Cors",
557        serialize_with = "CorsCorsRule::wrap",
558        skip_serializing_if = "Option::is_none"
559    )]
560    pub cors: Option<Vec<CorsRule>>,
561
562    /// The default service version.
563    #[serde(
564        rename = "DefaultServiceVersion",
565        skip_serializing_if = "Option::is_none"
566    )]
567    pub default_service_version: Option<String>,
568
569    /// The delete retention policy.
570    #[serde(
571        rename = "DeleteRetentionPolicy",
572        skip_serializing_if = "Option::is_none"
573    )]
574    pub delete_retention_policy: Option<RetentionPolicy>,
575
576    /// The hour metrics properties.
577    #[serde(rename = "HourMetrics", skip_serializing_if = "Option::is_none")]
578    pub hour_metrics: Option<Metrics>,
579
580    /// The logging properties.
581    #[serde(rename = "Logging", skip_serializing_if = "Option::is_none")]
582    pub logging: Option<Logging>,
583
584    /// The minute metrics properties.
585    #[serde(rename = "MinuteMetrics", skip_serializing_if = "Option::is_none")]
586    pub minute_metrics: Option<Metrics>,
587
588    /// The static website properties.
589    #[serde(rename = "StaticWebsite", skip_serializing_if = "Option::is_none")]
590    pub static_website: Option<StaticWebsite>,
591}
592
593/// The blob tags.
594#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
595#[serde(rename = "Tag")]
596pub struct BlobTag {
597    /// The key of the tag.
598    #[serde(rename = "Key", skip_serializing_if = "Option::is_none")]
599    pub key: Option<String>,
600
601    /// The value of the tag.
602    #[serde(rename = "Value", skip_serializing_if = "Option::is_none")]
603    pub value: Option<String>,
604}
605
606/// Represents blob tags.
607#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
608#[serde(rename = "Tags")]
609pub struct BlobTags {
610    /// Represents the blob tags.
611    #[serde(
612        default,
613        deserialize_with = "Blob_tag_setTag::unwrap",
614        rename = "TagSet",
615        serialize_with = "Blob_tag_setTag::wrap",
616        skip_serializing_if = "Option::is_none"
617    )]
618    pub blob_tag_set: Option<Vec<BlobTag>>,
619}
620
621/// Represents a single block in a block blob. It describes the block's ID and size.
622#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
623#[non_exhaustive]
624pub struct Block {
625    /// The base64 encoded block ID.
626    #[serde(
627        default,
628        deserialize_with = "deserialize",
629        rename = "Name",
630        serialize_with = "serialize",
631        skip_serializing_if = "Option::is_none"
632    )]
633    pub name: Option<Vec<u8>>,
634
635    /// The block size in bytes.
636    #[serde(rename = "Size", skip_serializing_if = "Option::is_none")]
637    pub size: Option<i64>,
638}
639
640/// Contains results for `BlockBlobClient::commit_block_list()`
641#[derive(SafeDebug)]
642pub struct BlockBlobClientCommitBlockListResult;
643
644/// Contains results for `BlockBlobClient::query()`
645#[derive(SafeDebug)]
646pub struct BlockBlobClientQueryResult;
647
648/// Contains results for `BlockBlobClient::stage_block_from_url()`
649#[derive(SafeDebug)]
650pub struct BlockBlobClientStageBlockFromUrlResult;
651
652/// Contains results for `BlockBlobClient::stage_block()`
653#[derive(SafeDebug)]
654pub struct BlockBlobClientStageBlockResult;
655
656/// Contains results for `BlockBlobClient::upload_blob_from_url()`
657#[derive(SafeDebug)]
658pub struct BlockBlobClientUploadBlobFromUrlResult;
659
660/// Contains results for `BlockBlobClient::upload()`
661#[derive(SafeDebug)]
662pub struct BlockBlobClientUploadResult;
663
664/// Contains the committed and uncommitted blocks in a block blob.
665#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
666#[non_exhaustive]
667pub struct BlockList {
668    /// The list of committed blocks.
669    #[serde(
670        default,
671        deserialize_with = "Committed_blocksBlock::unwrap",
672        rename = "CommittedBlocks",
673        serialize_with = "Committed_blocksBlock::wrap",
674        skip_serializing_if = "Option::is_none"
675    )]
676    pub committed_blocks: Option<Vec<Block>>,
677
678    /// The list of uncommitted blocks.
679    #[serde(
680        default,
681        deserialize_with = "Uncommitted_blocksBlock::unwrap",
682        rename = "UncommittedBlocks",
683        serialize_with = "Uncommitted_blocksBlock::wrap",
684        skip_serializing_if = "Option::is_none"
685    )]
686    pub uncommitted_blocks: Option<Vec<Block>>,
687}
688
689/// The Block lookup list.
690#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
691#[serde(rename = "BlockList")]
692pub struct BlockLookupList {
693    /// The committed blocks
694    #[serde(
695        default,
696        rename = "Committed",
697        skip_serializing_if = "Option::is_none",
698        with = "models_serde::option_vec_encoded_bytes_std"
699    )]
700    pub committed: Option<Vec<Vec<u8>>>,
701
702    /// The latest blocks
703    #[serde(
704        default,
705        rename = "Latest",
706        skip_serializing_if = "Option::is_none",
707        with = "models_serde::option_vec_encoded_bytes_std"
708    )]
709    pub latest: Option<Vec<Vec<u8>>>,
710
711    /// The uncommitted blocks
712    #[serde(
713        default,
714        rename = "Uncommitted",
715        skip_serializing_if = "Option::is_none",
716        with = "models_serde::option_vec_encoded_bytes_std"
717    )]
718    pub uncommitted: Option<Vec<Vec<u8>>>,
719}
720
721/// The clear range.
722#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
723#[non_exhaustive]
724pub struct ClearRange {
725    /// The end of the byte range.
726    #[serde(rename = "End", skip_serializing_if = "Option::is_none")]
727    pub end: Option<i64>,
728
729    /// The start of the byte range.
730    #[serde(rename = "Start", skip_serializing_if = "Option::is_none")]
731    pub start: Option<i64>,
732}
733
734/// An Azure Storage container.
735#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
736#[non_exhaustive]
737#[serde(rename = "Container")]
738pub struct ContainerItem {
739    /// Whether the container is deleted.
740    #[serde(rename = "Deleted", skip_serializing_if = "Option::is_none")]
741    pub delete: Option<bool>,
742
743    /// The metadata of the container.
744    #[serde(rename = "Metadata", skip_serializing_if = "Option::is_none")]
745    pub metadata: Option<HashMap<String, String>>,
746
747    /// The name of the container.
748    #[serde(rename = "Name", skip_serializing_if = "Option::is_none")]
749    pub name: Option<String>,
750
751    /// The properties of the container.
752    #[serde(rename = "Properties", skip_serializing_if = "Option::is_none")]
753    pub properties: Option<ContainerProperties>,
754
755    /// The version of the container.
756    #[serde(rename = "Version", skip_serializing_if = "Option::is_none")]
757    pub version: Option<String>,
758}
759
760/// The properties of a container.
761#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
762#[non_exhaustive]
763pub struct ContainerProperties {
764    /// The default encryption scope of the container.
765    #[serde(
766        rename = "DefaultEncryptionScope",
767        skip_serializing_if = "Option::is_none"
768    )]
769    pub default_encryption_scope: Option<String>,
770
771    /// The deleted time of the container.
772    #[serde(
773        default,
774        rename = "DeletedTime",
775        skip_serializing_if = "Option::is_none",
776        with = "azure_core::time::rfc7231::option"
777    )]
778    pub deleted_time: Option<OffsetDateTime>,
779
780    /// The ETag of the container.
781    #[serde(rename = "ETag", skip_serializing_if = "Option::is_none")]
782    pub etag: Option<String>,
783
784    /// Whether it has an immutability policy.
785    #[serde(
786        rename = "HasImmutabilityPolicy",
787        skip_serializing_if = "Option::is_none"
788    )]
789    pub has_immutability_policy: Option<bool>,
790
791    /// The has legal hold status of the container.
792    #[serde(rename = "HasLegalHold", skip_serializing_if = "Option::is_none")]
793    pub has_legal_hold: Option<bool>,
794
795    /// Whether immutable storage with versioning is enabled.
796    #[serde(
797        rename = "ImmutableStorageWithVersioningEnabled",
798        skip_serializing_if = "Option::is_none"
799    )]
800    pub is_immutable_storage_with_versioning_enabled: Option<bool>,
801
802    /// The date-time the container was last modified in RFC1123 format.
803    #[serde(
804        default,
805        rename = "Last-Modified",
806        skip_serializing_if = "Option::is_none",
807        with = "azure_core::time::rfc7231::option"
808    )]
809    pub last_modified: Option<OffsetDateTime>,
810
811    /// The lease duration of the container.
812    #[serde(rename = "LeaseDuration", skip_serializing_if = "Option::is_none")]
813    pub lease_duration: Option<LeaseDuration>,
814
815    /// The lease state of the container.
816    #[serde(rename = "LeaseState", skip_serializing_if = "Option::is_none")]
817    pub lease_state: Option<LeaseState>,
818
819    /// The lease status of the container.
820    #[serde(rename = "LeaseStatus", skip_serializing_if = "Option::is_none")]
821    pub lease_status: Option<LeaseStatus>,
822
823    /// Whether to prevent encryption scope override.
824    #[serde(
825        rename = "DenyEncryptionScopeOverride",
826        skip_serializing_if = "Option::is_none"
827    )]
828    pub prevent_encryption_scope_override: Option<bool>,
829
830    /// The public access type of the container.
831    #[serde(rename = "PublicAccess", skip_serializing_if = "Option::is_none")]
832    pub public_access: Option<PublicAccessType>,
833
834    /// The remaining retention days of the container.
835    #[serde(
836        rename = "RemainingRetentionDays",
837        skip_serializing_if = "Option::is_none"
838    )]
839    pub remaining_retention_days: Option<i32>,
840}
841
842/// CORS is an HTTP feature that enables a web application running under one domain to access resources in another domain.
843/// Web browsers implement a security restriction known as same-origin policy that prevents a web page from calling APIs in
844/// a different domain; CORS provides a secure way to allow one domain (the origin domain) to call APIs in another domain
845#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
846pub struct CorsRule {
847    /// The allowed headers.
848    #[serde(rename = "AllowedHeaders", skip_serializing_if = "Option::is_none")]
849    pub allowed_headers: Option<String>,
850
851    /// The allowed methods.
852    #[serde(rename = "AllowedMethods", skip_serializing_if = "Option::is_none")]
853    pub allowed_methods: Option<String>,
854
855    /// The allowed origins.
856    #[serde(rename = "AllowedOrigins", skip_serializing_if = "Option::is_none")]
857    pub allowed_origins: Option<String>,
858
859    /// The exposed headers.
860    #[serde(rename = "ExposedHeaders", skip_serializing_if = "Option::is_none")]
861    pub exposed_headers: Option<String>,
862
863    /// The maximum age in seconds.
864    #[serde(rename = "MaxAgeInSeconds", skip_serializing_if = "Option::is_none")]
865    pub max_age_in_seconds: Option<i32>,
866}
867
868/// Represents the delimited text configuration.
869#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
870pub struct DelimitedTextConfiguration {
871    /// The string used to separate columns.
872    #[serde(rename = "ColumnSeparator", skip_serializing_if = "Option::is_none")]
873    pub column_separator: Option<String>,
874
875    /// The string used to escape a quote character in a field.
876    #[serde(rename = "EscapeChar", skip_serializing_if = "Option::is_none")]
877    pub escape_char: Option<String>,
878
879    /// The string used to quote a specific field.
880    #[serde(rename = "FieldQuote", skip_serializing_if = "Option::is_none")]
881    pub field_quote: Option<String>,
882
883    /// Represents whether the data has headers.
884    #[serde(rename = "HasHeaders", skip_serializing_if = "Option::is_none")]
885    pub headers_present: Option<bool>,
886
887    /// The string used to separate records.
888    #[serde(rename = "RecordSeparator", skip_serializing_if = "Option::is_none")]
889    pub record_separator: Option<String>,
890}
891
892/// The filter blob item.
893#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
894#[non_exhaustive]
895#[serde(rename = "Blob")]
896pub struct FilterBlobItem {
897    /// The properties of the blob.
898    #[serde(rename = "ContainerName", skip_serializing_if = "Option::is_none")]
899    pub container_name: Option<String>,
900
901    /// Whether it is the current version of the blob
902    #[serde(rename = "IsCurrentVersion", skip_serializing_if = "Option::is_none")]
903    pub is_current_version: Option<bool>,
904
905    /// The name of the blob.
906    #[serde(rename = "Name", skip_serializing_if = "Option::is_none")]
907    pub name: Option<String>,
908
909    /// The metadata of the blob.
910    #[serde(skip_serializing_if = "Option::is_none")]
911    pub tags: Option<BlobTags>,
912
913    /// The version ID of the blob.
914    #[serde(rename = "VersionId", skip_serializing_if = "Option::is_none")]
915    pub version_id: Option<String>,
916}
917
918/// The result of a Filter Blobs API call
919#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
920#[non_exhaustive]
921#[serde(rename = "EnumerationResults")]
922pub struct FilterBlobSegment {
923    /// The blob segment.
924    #[serde(
925        default,
926        deserialize_with = "BlobsBlob::unwrap",
927        rename = "Blobs",
928        serialize_with = "BlobsBlob::wrap",
929        skip_serializing_if = "Option::is_none"
930    )]
931    pub blobs: Option<Vec<FilterBlobItem>>,
932
933    /// The next marker of the blobs.
934    #[serde(rename = "NextMarker", skip_serializing_if = "Option::is_none")]
935    pub next_marker: Option<String>,
936
937    /// The service endpoint.
938    #[serde(rename = "@ServiceEndpoint", skip_serializing_if = "Option::is_none")]
939    pub service_endpoint: Option<String>,
940
941    /// The filter for the blobs.
942    #[serde(rename = "Where", skip_serializing_if = "Option::is_none")]
943    pub where_prop: Option<String>,
944}
945
946/// Geo-Replication information for the Secondary Storage Service
947#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
948#[non_exhaustive]
949pub struct GeoReplication {
950    /// A GMT date/time value, to the second. All primary writes preceding this value are guaranteed to be available for read
951    /// operations at the secondary. Primary writes after this point in time may or may not be available for reads.
952    #[serde(
953        default,
954        rename = "LastSyncTime",
955        skip_serializing_if = "Option::is_none",
956        with = "azure_core::time::rfc7231::option"
957    )]
958    pub last_sync_time: Option<OffsetDateTime>,
959
960    /// The status of the secondary location
961    #[serde(rename = "Status", skip_serializing_if = "Option::is_none")]
962    pub status: Option<GeoReplicationStatusType>,
963}
964
965/// Represents the JSON text configuration.
966#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
967pub struct JsonTextConfiguration {
968    /// The string used to separate records.
969    #[serde(rename = "RecordSeparator", skip_serializing_if = "Option::is_none")]
970    pub record_separator: Option<String>,
971}
972
973/// Key information
974#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
975pub struct KeyInfo {
976    /// The date-time the key expires.
977    #[serde(rename = "Expiry", skip_serializing_if = "Option::is_none")]
978    pub expiry: Option<String>,
979
980    /// The date-time the key is active.
981    #[serde(rename = "Start", skip_serializing_if = "Option::is_none")]
982    pub start: Option<String>,
983}
984
985/// An enumeration of blobs.
986#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
987#[non_exhaustive]
988#[serde(rename = "EnumerationResults")]
989pub struct ListBlobsFlatSegmentResponse {
990    /// The container name.
991    #[serde(rename = "@ContainerName", skip_serializing_if = "Option::is_none")]
992    pub container_name: Option<String>,
993
994    /// The marker of the blobs.
995    #[serde(rename = "Marker", skip_serializing_if = "Option::is_none")]
996    pub marker: Option<String>,
997
998    /// The max results of the blobs.
999    #[serde(rename = "MaxResults", skip_serializing_if = "Option::is_none")]
1000    pub max_results: Option<i32>,
1001
1002    /// The next marker of the blobs.
1003    #[serde(rename = "NextMarker", skip_serializing_if = "Option::is_none")]
1004    pub next_marker: Option<String>,
1005
1006    /// The prefix of the blobs.
1007    #[serde(rename = "Prefix", skip_serializing_if = "Option::is_none")]
1008    pub prefix: Option<String>,
1009
1010    /// The blob segment.
1011    #[serde(default, rename = "Blobs")]
1012    pub segment: BlobFlatListSegment,
1013
1014    /// The service endpoint.
1015    #[serde(rename = "@ServiceEndpoint", skip_serializing_if = "Option::is_none")]
1016    pub service_endpoint: Option<String>,
1017}
1018
1019/// An enumeration of blobs
1020#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
1021#[non_exhaustive]
1022#[serde(rename = "EnumerationResults")]
1023pub struct ListBlobsHierarchySegmentResponse {
1024    /// The container name.
1025    #[serde(rename = "@ContainerName", skip_serializing_if = "Option::is_none")]
1026    pub container_name: Option<String>,
1027
1028    /// The delimiter of the blobs.
1029    #[serde(rename = "Delimiter", skip_serializing_if = "Option::is_none")]
1030    pub delimiter: Option<String>,
1031
1032    /// The marker of the blobs.
1033    #[serde(rename = "Marker", skip_serializing_if = "Option::is_none")]
1034    pub marker: Option<String>,
1035
1036    /// The max results of the blobs.
1037    #[serde(rename = "MaxResults", skip_serializing_if = "Option::is_none")]
1038    pub max_results: Option<i32>,
1039
1040    /// The next marker of the blobs.
1041    #[serde(rename = "NextMarker", skip_serializing_if = "Option::is_none")]
1042    pub next_marker: Option<String>,
1043
1044    /// The prefix of the blobs.
1045    #[serde(rename = "Prefix", skip_serializing_if = "Option::is_none")]
1046    pub prefix: Option<String>,
1047
1048    /// The blob segment.
1049    #[serde(default, rename = "Blobs")]
1050    pub segment: BlobHierarchyListSegment,
1051
1052    /// The service endpoint.
1053    #[serde(rename = "@ServiceEndpoint", skip_serializing_if = "Option::is_none")]
1054    pub service_endpoint: Option<String>,
1055}
1056
1057/// The list container segment response
1058#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
1059#[non_exhaustive]
1060#[serde(rename = "EnumerationResults")]
1061pub struct ListContainersSegmentResponse {
1062    /// The container segment.
1063    #[serde(
1064        default,
1065        deserialize_with = "Container_itemsContainer::unwrap",
1066        rename = "Containers",
1067        serialize_with = "Container_itemsContainer::wrap"
1068    )]
1069    pub container_items: Vec<ContainerItem>,
1070
1071    /// The marker of the containers.
1072    #[serde(rename = "Marker", skip_serializing_if = "Option::is_none")]
1073    pub marker: Option<String>,
1074
1075    /// The max results of the containers.
1076    #[serde(rename = "MaxResults", skip_serializing_if = "Option::is_none")]
1077    pub max_results: Option<i32>,
1078
1079    /// The next marker of the containers.
1080    #[serde(rename = "NextMarker", skip_serializing_if = "Option::is_none")]
1081    pub next_marker: Option<String>,
1082
1083    /// The prefix of the containers.
1084    #[serde(rename = "Prefix", skip_serializing_if = "Option::is_none")]
1085    pub prefix: Option<String>,
1086
1087    /// The service endpoint.
1088    #[serde(rename = "@ServiceEndpoint", skip_serializing_if = "Option::is_none")]
1089    pub service_endpoint: Option<String>,
1090}
1091
1092/// Azure Analytics Logging settings.
1093#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
1094pub struct Logging {
1095    /// Whether delete operation is logged.
1096    #[serde(rename = "Delete", skip_serializing_if = "Option::is_none")]
1097    pub delete: Option<bool>,
1098
1099    /// Whether read operation is logged.
1100    #[serde(rename = "Read", skip_serializing_if = "Option::is_none")]
1101    pub read: Option<bool>,
1102
1103    /// The retention policy of the logs.
1104    #[serde(rename = "RetentionPolicy", skip_serializing_if = "Option::is_none")]
1105    pub retention_policy: Option<RetentionPolicy>,
1106
1107    /// The version of the logging properties.
1108    #[serde(rename = "Version", skip_serializing_if = "Option::is_none")]
1109    pub version: Option<String>,
1110
1111    /// Whether write operation is logged.
1112    #[serde(rename = "Write", skip_serializing_if = "Option::is_none")]
1113    pub write: Option<bool>,
1114}
1115
1116/// The metrics properties.
1117#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
1118pub struct Metrics {
1119    /// Whether it is enabled.
1120    #[serde(rename = "Enabled", skip_serializing_if = "Option::is_none")]
1121    pub enabled: Option<bool>,
1122
1123    /// Whether to include API in the metrics.
1124    #[serde(rename = "IncludeAPIs", skip_serializing_if = "Option::is_none")]
1125    pub include_apis: Option<bool>,
1126
1127    /// The retention policy of the metrics.
1128    #[serde(rename = "RetentionPolicy", skip_serializing_if = "Option::is_none")]
1129    pub retention_policy: Option<RetentionPolicy>,
1130
1131    /// The version of the metrics properties.
1132    #[serde(rename = "Version", skip_serializing_if = "Option::is_none")]
1133    pub version: Option<String>,
1134}
1135
1136/// The object replication metadata.
1137#[derive(Clone, Default, SafeDebug)]
1138#[non_exhaustive]
1139pub struct ObjectReplicationMetadata {
1140    /// contains unnamed additional properties
1141    pub additional_properties: Option<HashMap<String, String>>,
1142}
1143
1144/// Contains results for `PageBlobClient::clear_pages()`
1145#[derive(SafeDebug)]
1146pub struct PageBlobClientClearPagesResult;
1147
1148/// Contains results for `PageBlobClient::copy_incremental()`
1149#[derive(SafeDebug)]
1150pub struct PageBlobClientCopyIncrementalResult;
1151
1152/// Contains results for `PageBlobClient::create()`
1153#[derive(SafeDebug)]
1154pub struct PageBlobClientCreateResult;
1155
1156/// Contains results for `PageBlobClient::resize()`
1157#[derive(SafeDebug)]
1158pub struct PageBlobClientResizeResult;
1159
1160/// Contains results for `PageBlobClient::set_sequence_number()`
1161#[derive(SafeDebug)]
1162pub struct PageBlobClientSetSequenceNumberResult;
1163
1164/// Contains results for `PageBlobClient::upload_pages_from_url()`
1165#[derive(SafeDebug)]
1166pub struct PageBlobClientUploadPagesFromUrlResult;
1167
1168/// Contains results for `PageBlobClient::upload_pages()`
1169#[derive(SafeDebug)]
1170pub struct PageBlobClientUploadPagesResult;
1171
1172/// Represents a page list.
1173#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
1174#[non_exhaustive]
1175pub struct PageList {
1176    /// The clear ranges.
1177    #[serde(rename = "ClearRange", skip_serializing_if = "Option::is_none")]
1178    pub clear_range: Option<Vec<ClearRange>>,
1179
1180    /// The next marker.
1181    #[serde(rename = "NextMarker", skip_serializing_if = "Option::is_none")]
1182    pub next_marker: Option<String>,
1183
1184    /// The page ranges.
1185    #[serde(rename = "PageRange", skip_serializing_if = "Option::is_none")]
1186    pub page_range: Option<Vec<PageRange>>,
1187}
1188
1189/// The page range.
1190#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
1191#[non_exhaustive]
1192pub struct PageRange {
1193    /// The end of the byte range.
1194    #[serde(rename = "End", skip_serializing_if = "Option::is_none")]
1195    pub end: Option<i64>,
1196
1197    /// The start of the byte range.
1198    #[serde(rename = "Start", skip_serializing_if = "Option::is_none")]
1199    pub start: Option<i64>,
1200}
1201
1202/// Represents the Parquet configuration.
1203#[derive(Clone, Default, SafeDebug)]
1204pub struct ParquetConfiguration {
1205    /// contains unnamed additional properties
1206    pub additional_properties: Option<HashMap<String, Value>>,
1207}
1208
1209/// The query format settings.
1210#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
1211pub struct QueryFormat {
1212    /// The Apache Arrow configuration.
1213    #[serde(rename = "ArrowConfiguration", skip_serializing_if = "Option::is_none")]
1214    pub arrow_configuration: Option<ArrowConfiguration>,
1215
1216    /// The delimited text configuration.
1217    #[serde(
1218        rename = "DelimitedTextConfiguration",
1219        skip_serializing_if = "Option::is_none"
1220    )]
1221    pub delimited_text_configuration: Option<DelimitedTextConfiguration>,
1222
1223    /// The JSON text configuration.
1224    #[serde(
1225        rename = "JsonTextConfiguration",
1226        skip_serializing_if = "Option::is_none"
1227    )]
1228    pub json_text_configuration: Option<JsonTextConfiguration>,
1229
1230    /// The Parquet configuration.
1231    #[serde(
1232        rename = "ParquetConfiguration",
1233        skip_serializing_if = "Option::is_none"
1234    )]
1235    pub parquet_text_configuration: Option<ParquetConfiguration>,
1236
1237    /// The query type.
1238    #[serde(rename = "Type", skip_serializing_if = "Option::is_none")]
1239    pub type_prop: Option<QueryType>,
1240}
1241
1242/// Groups the set of query request settings.
1243#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
1244pub struct QueryRequest {
1245    /// The query expression in SQL. The maximum size of the query expression is 256KiB.
1246    #[serde(rename = "Expression", skip_serializing_if = "Option::is_none")]
1247    pub expression: Option<String>,
1248
1249    /// The input serialization settings.
1250    #[serde(rename = "InputSerialization", skip_serializing_if = "Option::is_none")]
1251    pub input_serialization: Option<QuerySerialization>,
1252
1253    /// The output serialization settings.
1254    #[serde(
1255        rename = "OutputSerialization",
1256        skip_serializing_if = "Option::is_none"
1257    )]
1258    pub output_serialization: Option<QuerySerialization>,
1259
1260    /// Required. The type of the provided query expression.
1261    #[serde(rename = "QueryType", skip_serializing_if = "Option::is_none")]
1262    pub query_type: Option<QueryRequestType>,
1263}
1264
1265/// The query serialization settings.
1266#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
1267pub struct QuerySerialization {
1268    /// The query format.
1269    #[serde(rename = "Format", skip_serializing_if = "Option::is_none")]
1270    pub format: Option<QueryFormat>,
1271}
1272
1273/// The retention policy.
1274#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
1275pub struct RetentionPolicy {
1276    /// Whether to allow permanent delete.
1277    #[serde(
1278        rename = "AllowPermanentDelete",
1279        skip_serializing_if = "Option::is_none"
1280    )]
1281    pub allow_permanent_delete: Option<bool>,
1282
1283    /// The number of days to retain the logs.
1284    #[serde(rename = "Days", skip_serializing_if = "Option::is_none")]
1285    pub days: Option<i32>,
1286
1287    /// Whether to enable the retention policy.
1288    #[serde(rename = "Enabled", skip_serializing_if = "Option::is_none")]
1289    pub enabled: Option<bool>,
1290}
1291
1292/// The signed identifier.
1293#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
1294#[serde(rename = "SignedIdentifier")]
1295pub struct SignedIdentifier {
1296    /// The access policy for the signed identifier.
1297    #[serde(rename = "AccessPolicy", skip_serializing_if = "Option::is_none")]
1298    pub access_policy: Option<AccessPolicy>,
1299
1300    /// The unique ID for the signed identifier.
1301    #[serde(rename = "Id", skip_serializing_if = "Option::is_none")]
1302    pub id: Option<String>,
1303}
1304
1305/// The properties that enable an account to host a static website
1306#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
1307pub struct StaticWebsite {
1308    /// Absolute path of the default index page
1309    #[serde(
1310        rename = "DefaultIndexDocumentPath",
1311        skip_serializing_if = "Option::is_none"
1312    )]
1313    pub default_index_document_path: Option<String>,
1314
1315    /// Indicates whether this account is hosting a static website
1316    #[serde(rename = "Enabled", skip_serializing_if = "Option::is_none")]
1317    pub enabled: Option<bool>,
1318
1319    /// The error document.
1320    #[serde(
1321        rename = "ErrorDocument404Path",
1322        skip_serializing_if = "Option::is_none"
1323    )]
1324    pub error_document404_path: Option<String>,
1325
1326    /// The index document.
1327    #[serde(rename = "IndexDocument", skip_serializing_if = "Option::is_none")]
1328    pub index_document: Option<String>,
1329}
1330
1331/// Stats for the storage service.
1332#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
1333#[non_exhaustive]
1334pub struct StorageServiceStats {
1335    /// The geo replication stats.
1336    #[serde(rename = "GeoReplication", skip_serializing_if = "Option::is_none")]
1337    pub geo_replication: Option<GeoReplication>,
1338}
1339
1340/// A user delegation key.
1341#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)]
1342#[non_exhaustive]
1343pub struct UserDelegationKey {
1344    /// The date-time the key expires.
1345    #[serde(rename = "SignedExpiry", skip_serializing_if = "Option::is_none")]
1346    pub signed_expiry: Option<String>,
1347
1348    /// The Azure Active Directory object ID in GUID format.
1349    #[serde(rename = "SignedOid", skip_serializing_if = "Option::is_none")]
1350    pub signed_oid: Option<String>,
1351
1352    /// Abbreviation of the Azure Storage service that accepts the key.
1353    #[serde(rename = "SignedService", skip_serializing_if = "Option::is_none")]
1354    pub signed_service: Option<String>,
1355
1356    /// The date-time the key is active.
1357    #[serde(rename = "SignedStart", skip_serializing_if = "Option::is_none")]
1358    pub signed_start: Option<String>,
1359
1360    /// The Azure Active Directory tenant ID in GUID format.
1361    #[serde(rename = "SignedTid", skip_serializing_if = "Option::is_none")]
1362    pub signed_tid: Option<String>,
1363
1364    /// The service version that created the key.
1365    #[serde(rename = "SignedVersion", skip_serializing_if = "Option::is_none")]
1366    pub signed_version: Option<String>,
1367
1368    /// The key as a base64 string.
1369    #[serde(
1370        default,
1371        deserialize_with = "deserialize",
1372        rename = "Value",
1373        serialize_with = "serialize",
1374        skip_serializing_if = "Option::is_none"
1375    )]
1376    pub value: Option<Vec<u8>>,
1377}